diff --git a/rojo-test/build-test-snapshots/end_to_end__tests__build__project_composed_default.snap b/rojo-test/build-test-snapshots/end_to_end__tests__build__project_composed_default.snap
new file mode 100644
index 00000000..6445e820
--- /dev/null
+++ b/rojo-test/build-test-snapshots/end_to_end__tests__build__project_composed_default.snap
@@ -0,0 +1,17 @@
+---
+source: tests/tests/build.rs
+expression: contents
+
+---
+
+ -
+
+ root
+
+
-
+
+ folder
+
+
+
+
diff --git a/rojo-test/build-test-snapshots/end_to_end__tests__build__project_composed_file.snap b/rojo-test/build-test-snapshots/end_to_end__tests__build__project_composed_file.snap
new file mode 100644
index 00000000..287268ed
--- /dev/null
+++ b/rojo-test/build-test-snapshots/end_to_end__tests__build__project_composed_file.snap
@@ -0,0 +1,22 @@
+---
+source: tests/tests/build.rs
+expression: contents
+
+---
+
+ -
+
+ root
+
+
-
+
+ folder
+
+
-
+
+ child-projectname
+
+
+
+
+
diff --git a/rojo-test/build-test-snapshots/end_to_end__tests__build__project_root_name.snap b/rojo-test/build-test-snapshots/end_to_end__tests__build__project_root_name.snap
new file mode 100644
index 00000000..2dd39b54
--- /dev/null
+++ b/rojo-test/build-test-snapshots/end_to_end__tests__build__project_root_name.snap
@@ -0,0 +1,12 @@
+---
+source: tests/tests/build.rs
+expression: contents
+
+---
+
+ -
+
+ root
+
+
+
diff --git a/rojo-test/build-tests/project_composed_default/default.project.json b/rojo-test/build-tests/project_composed_default/default.project.json
new file mode 100644
index 00000000..c38c6b60
--- /dev/null
+++ b/rojo-test/build-tests/project_composed_default/default.project.json
@@ -0,0 +1,9 @@
+{
+ "name": "root",
+ "tree": {
+ "$className": "Folder",
+ "folder": {
+ "$path": "folder"
+ }
+ }
+}
\ No newline at end of file
diff --git a/rojo-test/build-tests/project_composed_default/folder/default.project.json b/rojo-test/build-tests/project_composed_default/folder/default.project.json
new file mode 100644
index 00000000..0b282813
--- /dev/null
+++ b/rojo-test/build-tests/project_composed_default/folder/default.project.json
@@ -0,0 +1,6 @@
+{
+ "name": "child-projectname",
+ "tree": {
+ "$className": "Folder"
+ }
+}
\ No newline at end of file
diff --git a/rojo-test/build-tests/project_composed_file/default.project.json b/rojo-test/build-tests/project_composed_file/default.project.json
new file mode 100644
index 00000000..c38c6b60
--- /dev/null
+++ b/rojo-test/build-tests/project_composed_file/default.project.json
@@ -0,0 +1,9 @@
+{
+ "name": "root",
+ "tree": {
+ "$className": "Folder",
+ "folder": {
+ "$path": "folder"
+ }
+ }
+}
\ No newline at end of file
diff --git a/rojo-test/build-tests/project_composed_file/folder/child-filename.project.json b/rojo-test/build-tests/project_composed_file/folder/child-filename.project.json
new file mode 100644
index 00000000..0b282813
--- /dev/null
+++ b/rojo-test/build-tests/project_composed_file/folder/child-filename.project.json
@@ -0,0 +1,6 @@
+{
+ "name": "child-projectname",
+ "tree": {
+ "$className": "Folder"
+ }
+}
\ No newline at end of file
diff --git a/rojo-test/build-tests/project_root_name/default.project.json b/rojo-test/build-tests/project_root_name/default.project.json
new file mode 100644
index 00000000..d7171c6a
--- /dev/null
+++ b/rojo-test/build-tests/project_root_name/default.project.json
@@ -0,0 +1,6 @@
+{
+ "name": "root",
+ "tree": {
+ "$className": "Folder"
+ }
+}
\ No newline at end of file
diff --git a/tests/tests/build.rs b/tests/tests/build.rs
index 23b066b9..33829683 100644
--- a/tests/tests/build.rs
+++ b/tests/tests/build.rs
@@ -41,6 +41,9 @@ gen_build_tests! {
json_model_legacy_name,
module_in_folder,
module_init,
+ project_composed_default,
+ project_composed_file,
+ project_root_name,
rbxm_in_folder,
rbxmx_in_folder,
rbxmx_ref,