|
7 | 7 |
|
8 | 8 | import com.google.common.io.Resources; |
9 | 9 | import io.dockstore.common.VersionTypeValidation; |
| 10 | +import io.dockstore.language.MinimalLanguageInterface.FileMetadata; |
| 11 | +import io.dockstore.language.MinimalLanguageInterface.GenericFileType; |
10 | 12 | import java.io.File; |
11 | 13 | import java.io.IOException; |
12 | 14 | import java.net.URL; |
@@ -70,6 +72,28 @@ public void testWorkflowParsingComplex() { |
70 | 72 | assertTrue(plugin.validateWorkflowSet(initialPath, contents,fileMap).isValid()); |
71 | 73 | } |
72 | 74 |
|
| 75 | + private static Map<String, FileMetadata> createDummyFileMap(String initialPath) { |
| 76 | + return Map.of( |
| 77 | + initialPath, new FileMetadata("dummy snakefile content", GenericFileType.IMPORTED_DESCRIPTOR, "1.0"), |
| 78 | + SnakemakeWorkflowPlugin.SNAKEMAKE_WORKFLOW_CATALOG_YML, new FileMetadata("dummy workflow catalog content", GenericFileType.IMPORTED_DESCRIPTOR, "1.0") |
| 79 | + ); |
| 80 | + } |
| 81 | + |
| 82 | + @Test |
| 83 | + public void testWorkflowPrimaryDescriptorMustBeSnakefile() { |
| 84 | + final SnakemakeWorkflowPlugin.SnakemakeWorkflowPluginImpl plugin = |
| 85 | + new SnakemakeWorkflowPlugin.SnakemakeWorkflowPluginImpl(); |
| 86 | + for (String validPath: List.of("/Snakefile", "/workflow/Snakefile", "/snakefile", "/workflow/snakefile")) { |
| 87 | + VersionTypeValidation validation = plugin.validateWorkflowSet(validPath, "", createDummyFileMap(validPath)); |
| 88 | + assertTrue(validation.isValid()); |
| 89 | + } |
| 90 | + for (String invalidPath: List.of("/workflow.wdl", "/data.txt")) { |
| 91 | + VersionTypeValidation validation = plugin.validateWorkflowSet(invalidPath, "", createDummyFileMap(invalidPath)); |
| 92 | + assertFalse(validation.isValid()); |
| 93 | + assertEquals(validation.getMessage().get(invalidPath), SnakemakeWorkflowPlugin.INVALID_INITIAL_PATH_MESSAGE); |
| 94 | + } |
| 95 | + } |
| 96 | + |
73 | 97 | abstract static class URLFileReader implements MinimalLanguageInterface.FileReader { |
74 | 98 | // URL to repo |
75 | 99 | protected final String repo; |
|
0 commit comments