diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleWrapperContributorTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleWrapperContributorTests.java index dee114d7..e67c6ec9 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleWrapperContributorTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleWrapperContributorTests.java @@ -60,13 +60,17 @@ class GradleWrapperContributorTests { private Consumer isNotExecutable() { return (path) -> { - if (Files.isExecutable(path)) { + if (supportsExecutableFlag() && Files.isExecutable(path)) { throw Failures.instance().failure(String .format("%nExpecting:%n <%s>%nto not be executable.", path)); } }; } + private static boolean supportsExecutableFlag() { + return !System.getProperty("os.name").startsWith("Windows"); + } + Path contribute(String gradleVersion) throws IOException { Path projectDir = Files.createTempDirectory(this.directory, "project-"); new GradleWrapperContributor(gradleVersion).contribute(projectDir); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/MavenWrapperContributorTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/MavenWrapperContributorTests.java index b532d5a9..09f320f8 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/MavenWrapperContributorTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/MavenWrapperContributorTests.java @@ -52,13 +52,17 @@ class MavenWrapperContributorTests { private Consumer isNotExecutable() { return (path) -> { - if (Files.isExecutable(path)) { + if (supportsExecutableFlag() && Files.isExecutable(path)) { throw Failures.instance().failure(String .format("%nExpecting:%n <%s>%nto not be executable.", path)); } }; } + private static boolean supportsExecutableFlag() { + return !System.getProperty("os.name").startsWith("Windows"); + } + Path contribute() throws IOException { Path projectDir = Files.createTempDirectory(this.directory, "project-"); new MavenWrapperContributor().contribute(projectDir); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/test/code/SourceCodeAssert.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/test/code/SourceCodeAssert.java index ef9d2fbb..9f280093 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/test/code/SourceCodeAssert.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/test/code/SourceCodeAssert.java @@ -42,8 +42,8 @@ public class SourceCodeAssert { } public SourceCodeAssert equalsTo(Resource expected) { - try (InputStream stream = expected.getInputStream()) { - String expectedContent = StreamUtils.copyToString(stream, + try (InputStream in = expected.getInputStream()) { + String expectedContent = StreamUtils.copyToString(in, Charset.forName("UTF-8")); assertThat(this.content).describedAs("Content for %s", this.name) .isEqualTo(expectedContent.replaceAll("\r\n", "\n")); diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/test/project/ProjectStructure.java b/initializr-generator/src/test/java/io/spring/initializr/generator/test/project/ProjectStructure.java index f7f3b745..766d2634 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/test/project/ProjectStructure.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/test/project/ProjectStructure.java @@ -17,6 +17,7 @@ package io.spring.initializr.generator.test.project; import java.io.IOException; +import java.nio.file.FileSystems; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; @@ -75,7 +76,8 @@ public class ProjectStructure { } /** - * Return the relative paths of all files. + * Return the relative paths of all files. For consistency, always use {@code /} as + * path separator. * @return the relative path of all files */ public List getRelativePathsOfProjectFiles() { @@ -84,8 +86,7 @@ public class ProjectStructure { Files.walkFileTree(this.projectDirectory, new SimpleFileVisitor() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { - relativePaths.add(ProjectStructure.this.projectDirectory - .relativize(file).toString()); + relativePaths.add(createRelativePath(file)); return FileVisitResult.CONTINUE; } }); @@ -96,4 +97,12 @@ public class ProjectStructure { return relativePaths; } + private String createRelativePath(Path file) { + String relativePath = this.projectDirectory.relativize(file).toString(); + if (FileSystems.getDefault().getSeparator().equals("\\")) { + return relativePath.replace('\\', '/'); + } + return relativePath; + } + } diff --git a/initializr-metadata/src/main/java/io/spring/initializr/metadata/InitializrMetadataBuilder.java b/initializr-metadata/src/main/java/io/spring/initializr/metadata/InitializrMetadataBuilder.java index 41e5baf4..000839a7 100644 --- a/initializr-metadata/src/main/java/io/spring/initializr/metadata/InitializrMetadataBuilder.java +++ b/initializr-metadata/src/main/java/io/spring/initializr/metadata/InitializrMetadataBuilder.java @@ -16,6 +16,7 @@ package io.spring.initializr.metadata; +import java.io.InputStream; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; @@ -202,9 +203,8 @@ public final class InitializrMetadataBuilder { @Override public void customize(InitializrMetadata metadata) { logger.info("Loading initializr metadata from " + this.resource); - try { - String content = StreamUtils.copyToString(this.resource.getInputStream(), - UTF_8); + try (InputStream in = this.resource.getInputStream()) { + String content = StreamUtils.copyToString(in, UTF_8); ObjectMapper objectMapper = new ObjectMapper(); InitializrMetadata anotherMetadata = objectMapper.readValue(content, InitializrMetadata.class); diff --git a/initializr-web/src/test/java/io/spring/initializr/web/AbstractInitializrIntegrationTests.java b/initializr-web/src/test/java/io/spring/initializr/web/AbstractInitializrIntegrationTests.java index 37819c04..f267c4fe 100755 --- a/initializr-web/src/test/java/io/spring/initializr/web/AbstractInitializrIntegrationTests.java +++ b/initializr-web/src/test/java/io/spring/initializr/web/AbstractInitializrIntegrationTests.java @@ -243,8 +243,8 @@ public abstract class AbstractInitializrIntegrationTests { protected JSONObject readJsonFrom(String path) { try { ClassPathResource resource = new ClassPathResource(path); - try (InputStream stream = resource.getInputStream()) { - String json = StreamUtils.copyToString(stream, Charset.forName("UTF-8")); + try (InputStream in = resource.getInputStream()) { + String json = StreamUtils.copyToString(in, Charset.forName("UTF-8")); String placeholder = ""; if (this instanceof AbstractInitializrControllerIntegrationTests) { placeholder = ((AbstractInitializrControllerIntegrationTests) this).host;