From c94e18abd84d4c69e8a53d434f07d651c4fb892a Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Tue, 3 Jan 2017 03:56:50 -0500 Subject: [PATCH] [codegen ignore] normalize path separator for Windows, add *.ext tests (#4476) * [codegen ignore] Fix windows paths for ignore processing * [codegen ignore] Add missing glob rule tests --- .../io/swagger/codegen/DefaultGenerator.java | 11 +++--- .../ignore/CodegenIgnoreProcessorTest.java | 2 + .../codegen/ignore/rules/FileRuleTest.java | 39 +++++++++++++++++++ 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 228be1a3ef5..94d1579671e 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -474,7 +474,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { if (!of.isDirectory()) { of.mkdirs(); } - String outputFilename = outputFolder + File.separator + support.destinationFilename; + String outputFilename = outputFolder + File.separator + support.destinationFilename.replace('/', File.separatorChar); if (!config.shouldOverwrite(outputFilename)) { LOGGER.info("Skipped overwriting " + outputFilename); continue; @@ -657,7 +657,8 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { } private File processTemplateToFile(Map templateData, String templateName, String outputFilename) throws IOException { - if(ignoreProcessor.allowsFile(new File(outputFilename.replaceAll("//", "/")))) { + String adjustedOutputFilename = outputFilename.replaceAll("//", "/").replace('/', File.separatorChar); + if(ignoreProcessor.allowsFile(new File(adjustedOutputFilename))) { String templateFile = getFullTemplateFile(config, templateName); String template = readTemplate(templateFile); Mustache.Compiler compiler = Mustache.compiler(); @@ -672,11 +673,11 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { .defaultValue("") .compile(template); - writeToFile(outputFilename, tmpl.execute(templateData)); - return new File(outputFilename); + writeToFile(adjustedOutputFilename, tmpl.execute(templateData)); + return new File(adjustedOutputFilename); } - LOGGER.info("Skipped generation of " + outputFilename + " due to rule in .swagger-codegen-ignore"); + LOGGER.info("Skipped generation of " + adjustedOutputFilename + " due to rule in .swagger-codegen-ignore"); return null; } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/ignore/CodegenIgnoreProcessorTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/ignore/CodegenIgnoreProcessorTest.java index ef30ca48331..da4a46f4af8 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/ignore/CodegenIgnoreProcessorTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/ignore/CodegenIgnoreProcessorTest.java @@ -107,6 +107,8 @@ public class CodegenIgnoreProcessorTest { return new Object[] { // Matching filenames new CodegenIgnoreProcessorTest("build.sh", "build.sh", "A file when matching should ignore.").ignored(), + new CodegenIgnoreProcessorTest("build.sh", "*.sh", "A file when matching glob should ignore.").ignored(), + new CodegenIgnoreProcessorTest("src/build.sh", "*.sh", "A nested file when matching non-nested simple glob should allow.").allowed(), new CodegenIgnoreProcessorTest("src/build.sh", "**/build.sh", "A file when matching nested files should ignore.").ignored(), new CodegenIgnoreProcessorTest("Build.sh", "build.sh", "A file when non-matching should allow.").allowed().skipOnCondition(SystemUtils.IS_OS_WINDOWS), new CodegenIgnoreProcessorTest("build.sh", "/build.sh", "A rooted file when matching should ignore.").ignored(), diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/ignore/rules/FileRuleTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/ignore/rules/FileRuleTest.java index f093507d84c..401bb7031a7 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/ignore/rules/FileRuleTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/ignore/rules/FileRuleTest.java @@ -67,4 +67,43 @@ public class FileRuleTest { assertFalse(actual); } + @Test + public void testGlobbingRecursive() throws Exception { + // Arrange + final String definition = "*.txt"; + final String relativePath = "path/to/some/nested/location/xyzzy.txt"; + + // Act + final List syntax = Arrays.asList( + new Part(IgnoreLineParser.Token.MATCH_ALL), + new Part(IgnoreLineParser.Token.DIRECTORY_MARKER), + new Part(IgnoreLineParser.Token.MATCH_ANY), + new Part(IgnoreLineParser.Token.TEXT, ".txt") + ); + + Rule rule = new FileRule(syntax, definition); + Boolean actual = rule.matches(relativePath); + + // Assert + assertTrue(actual); + } + + @Test + public void testGlobbingNotRecursive() throws Exception { + // Arrange + final String definition = "*.txt"; + final String relativePath = "path/to/some/nested/location/xyzzy.txt"; + + // Act + final List syntax = Arrays.asList( + new Part(IgnoreLineParser.Token.MATCH_ANY), + new Part(IgnoreLineParser.Token.TEXT, ".txt") + ); + + Rule rule = new FileRule(syntax, definition); + Boolean actual = rule.matches(relativePath); + + // Assert + assertFalse(actual); + } } \ No newline at end of file