diff options
| author | Michael Williamson <mike@zwobble.org> | 2025-01-12 17:29:05 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2025-01-12 17:29:05 +0000 |
| commit | 50730c7784ee742c8c148d4d5b07c4ea312a8e58 (patch) | |
| tree | 85f1432a0bb6ad137176fc376cbd6cd4770bc7e2 /src/test/java | |
| parent | 0d3098233012bf20123e778927a2e8473a2e230b (diff) | |
Improve collection of source files
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/SourceFilesTests.java | 57 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/TemporaryFiles.java | 14 |
2 files changed, 71 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/SourceFilesTests.java b/src/test/java/org/shedlang/compiler/SourceFilesTests.java new file mode 100644 index 00000000..d904d057 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/SourceFilesTests.java @@ -0,0 +1,57 @@ +package org.shedlang.compiler; + +import org.junit.jupiter.api.Test; +import org.shedlang.compiler.types.NamespaceName; + +import java.io.IOException; +import java.nio.file.Files; + +import static org.shedlang.compiler.TemporaryFiles.createTemporaryTestDirectory; +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.*; + +public class SourceFilesTests { + @Test + public void whenDirectoryIsEmptyThenNoSourceFilesAreFound() throws IOException { + var sourceDirectory = createTemporaryTestDirectory("SourceFilesTests"); + + var sourceFiles = SourceFiles.collectSourceFiles(sourceDirectory); + + assertThat(sourceFiles, containsExactly()); + } + + @Test + public void whenDirectoryContainsFileWithShedExtensionThenSourceFileIsFound() throws IOException { + var sourceDirectory = createTemporaryTestDirectory("SourceFilesTests"); + Files.createFile(sourceDirectory.resolve("One.shed")); + + var sourceFiles = SourceFiles.collectSourceFiles(sourceDirectory); + + assertThat(sourceFiles, containsExactly( + allOf( + has("path", x -> x.path(), equalTo(sourceDirectory.resolve("One.shed"))), + has("namespaceName", x -> x.namespaceName(), equalTo(NamespaceName.of("One"))) + ) + )); + } + + @Test + public void whenDirectoryContainsFileWithNonShedExtensionThenNoSourceFileIsFound() throws IOException { + var sourceDirectory = createTemporaryTestDirectory("SourceFilesTests"); + Files.createFile(sourceDirectory.resolve("One.she")); + + var sourceFiles = SourceFiles.collectSourceFiles(sourceDirectory); + + assertThat(sourceFiles, containsExactly()); + } + + @Test + public void whenFileHasMultipleThenExtensionsThenFileIsNotTreatedAsSourceFile() throws IOException { + var sourceDirectory = createTemporaryTestDirectory("SourceFilesTests"); + Files.createFile(sourceDirectory.resolve("One.Two.shed")); + + var sourceFiles = SourceFiles.collectSourceFiles(sourceDirectory); + + assertThat(sourceFiles, containsExactly()); + } +} diff --git a/src/test/java/org/shedlang/compiler/TemporaryFiles.java b/src/test/java/org/shedlang/compiler/TemporaryFiles.java new file mode 100644 index 00000000..bfe084c6 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/TemporaryFiles.java @@ -0,0 +1,14 @@ +package org.shedlang.compiler; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +public class TemporaryFiles { + private TemporaryFiles() {} + + public static Path createTemporaryTestDirectory(String name) throws IOException { + Files.createDirectories(Path.of("tests-tmp")); + return Files.createTempDirectory(Path.of("tests-tmp"), name); + } +} |
