diff --git a/indigo-plugin/indigo-plugin/src/indigoplugin/core/IndigoBuild.scala b/indigo-plugin/indigo-plugin/src/indigoplugin/core/IndigoBuild.scala index 24a75f485..472d5e73a 100644 --- a/indigo-plugin/indigo-plugin/src/indigoplugin/core/IndigoBuild.scala +++ b/indigo-plugin/indigo-plugin/src/indigoplugin/core/IndigoBuild.scala @@ -147,6 +147,8 @@ object IndigoBuild { def copyOne(p: Path): java.nio.file.Path = { val target = to / p.relativeTo(from) + os.makeDir.all(target) + java.nio.file.Files.copy( p.wrapped, target.wrapped, diff --git a/indigo-plugin/indigo-plugin/test/src/indigoplugin/core/AcceptanceTests.scala b/indigo-plugin/indigo-plugin/test/src/indigoplugin/core/AcceptanceTests.scala index 385914347..af36b1a69 100644 --- a/indigo-plugin/indigo-plugin/test/src/indigoplugin/core/AcceptanceTests.scala +++ b/indigo-plugin/indigo-plugin/test/src/indigoplugin/core/AcceptanceTests.scala @@ -10,7 +10,7 @@ class AcceptanceTests extends munit.FunSuite { override def beforeAll(): Unit = { if (os.exists(targetDir)) { - os.remove(target = targetDir, checkExists = true) + os.remove.all(target = targetDir) } os.makeDir.all(targetDir) @@ -19,16 +19,37 @@ class AcceptanceTests extends munit.FunSuite { val indigoAssets = IndigoAssets( gameAssetsDirectory = sourceDir, - include = { case _ => false }, - exclude = { case _ => false } + include = { + case p if p.endsWith(os.RelPath("taken.txt")) => true + case p if p.toString.matches("(.*)also-taken.txt") => true + case _ => false + }, + exclude = { + case p if p.startsWith(os.RelPath("ignored-folder")) => true + case p if p.startsWith(os.RelPath("mixed")) => true + case _ => false + } ) test("Copy assets and assert expected output files") { IndigoBuild.copyAssets(indigoAssets, targetDir) + // Basics assert(os.exists(targetDir)) assert(os.exists(targetDir / "foo.txt")) + assert(os.exists(targetDir / "data" / "stats.csv")) + + // Ignored folder + assert(!os.exists(targetDir / "ignored-folder")) + assert(!os.exists(targetDir / "ignored-folder" / "ignored-file.txt")) + + // Generally excluded, but some taken. + assert(os.exists(targetDir / "mixed")) + assert(!os.exists(targetDir / "mixed" / "ignored-file.txt")) + assert(os.exists(targetDir / "mixed" / "taken.txt")) + assert(os.exists(targetDir / "mixed" / "also-taken.txt")) + } } diff --git a/indigo-plugin/test-assets/data/stats.csv b/indigo-plugin/test-assets/data/stats.csv new file mode 100644 index 000000000..e0b053e51 --- /dev/null +++ b/indigo-plugin/test-assets/data/stats.csv @@ -0,0 +1,5 @@ +name,level,bonus +intelligence,2,4 +strength,10,0 +fortitude,4,1 + diff --git a/indigo-plugin/test-assets/ignored-folder/ignored-file.txt b/indigo-plugin/test-assets/ignored-folder/ignored-file.txt new file mode 100644 index 000000000..32344b008 --- /dev/null +++ b/indigo-plugin/test-assets/ignored-folder/ignored-file.txt @@ -0,0 +1 @@ +This file should not be copied over. diff --git a/indigo-plugin/test-assets/mixed/also-taken.txt b/indigo-plugin/test-assets/mixed/also-taken.txt new file mode 100644 index 000000000..1d7b8eb22 --- /dev/null +++ b/indigo-plugin/test-assets/mixed/also-taken.txt @@ -0,0 +1 @@ +This file should be copied over. diff --git a/indigo-plugin/test-assets/mixed/ignored-file.txt b/indigo-plugin/test-assets/mixed/ignored-file.txt new file mode 100644 index 000000000..32344b008 --- /dev/null +++ b/indigo-plugin/test-assets/mixed/ignored-file.txt @@ -0,0 +1 @@ +This file should not be copied over. diff --git a/indigo-plugin/test-assets/mixed/taken.txt b/indigo-plugin/test-assets/mixed/taken.txt new file mode 100644 index 000000000..1d7b8eb22 --- /dev/null +++ b/indigo-plugin/test-assets/mixed/taken.txt @@ -0,0 +1 @@ +This file should be copied over.