diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/PomReader.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/PomReader.java index 9ac343d8..594aaae5 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/PomReader.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/PomReader.java @@ -38,6 +38,9 @@ class PomReader { if (file.isDirectory()) { pom = new File(file,"pom.xml"); } + if (!pom.exists()) { + return null; + } String fileText = ""; try(Reader reader = new FileReader(pom)) { if (file.isFile()) { diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/PomUpdater.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/PomUpdater.java index bfeccea7..ab53c452 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/PomUpdater.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/pom/PomUpdater.java @@ -68,6 +68,10 @@ class PomUpdater { return false; } Model model = this.pomReader.readPom(rootPom); + if (model == null) { + log.info("Failed to read the model"); + return false; + } String artifactId = artifactId(model); if (!versions.shouldBeUpdated(artifactId)) { log.info("Skipping project [{}] since it's not on the list of projects to update", model.getArtifactId()); diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/pom/PomReaderTests.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/pom/PomReaderTests.java index d4a1ee19..e59ec2d4 100644 --- a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/pom/PomReaderTests.java +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/pom/PomReaderTests.java @@ -68,10 +68,8 @@ public class PomReaderTests { } @Test - public void should_throw_exception_when_file_is_missing() { - thenThrownBy(() -> this.pomReader.readPom(new File("foo/bar"))) - .hasMessageStartingWith("Failed to read file: ") - .hasCauseInstanceOf(IOException.class); + public void should_return_null_when_file_is_missing() { + then(this.pomReader.readPom(new File("foo/bar"))).isNull(); } @Test diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/pom/PomUpdaterTests.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/pom/PomUpdaterTests.java index 53c117b2..dc1e38a5 100644 --- a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/pom/PomUpdaterTests.java +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/pom/PomUpdaterTests.java @@ -81,6 +81,14 @@ public class PomUpdaterTests { .then(this.pomUpdater.shouldProjectBeUpdated(springCloudSleuthPom, this.versions)).isTrue(); } + @Test + public void should_not_update_pom_when_project_is_on_the_versions_list_but_there_is_no_pom() throws Exception { + File springCloudSleuthPom = file("/projects/spring-cloud-sleuth/empty-folder"); + + BDDAssertions + .then(this.pomUpdater.shouldProjectBeUpdated(springCloudSleuthPom, this.versions)).isFalse(); + } + @Test public void should_not_update_the_pom_if_no_changes_were_made() throws Exception { File originalPom = pom("/projects/project"); diff --git a/spring-cloud-release-tools-core/src/test/resources/projects/spring-cloud-sleuth/empty-folder/.gitkeep b/spring-cloud-release-tools-core/src/test/resources/projects/spring-cloud-sleuth/empty-folder/.gitkeep new file mode 100644 index 00000000..e69de29b