Revise repository declarations handling.

We now rewrite the <repositories> section of each parent pom to leave the milestone repo for milestone releases, remove all repositories if the release is a GA or service release and put both repositories back after a release.

Closes #39
This commit is contained in:
Mark Paluch
2023-06-07 09:09:20 +02:00
parent 58576d4eb7
commit 81d8b0ad20
11 changed files with 214 additions and 134 deletions

View File

@@ -21,9 +21,8 @@ import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import org.junit.jupiter.api.Test;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.release.build.Pom.RepositoryElementFactory;
import org.xmlbeam.XBProjector;
/**
@@ -49,4 +48,34 @@ class MavenBuildSystemUnitTests {
.endsWith(IOUtils.LINE_SEPARATOR);
}
}
@Test
void shouldRemoveRepositories() throws Exception {
ClassPathResource resource = new ClassPathResource("sample-pom.xml");
try (InputStream is = resource.getInputStream()) {
byte[] bytes = MavenBuildSystem.doWithProjection(projector, is, Pom.class, Pom::deleteRepositories);
assertThat(new String(bytes)).contains("<repositories>").doesNotContain("<repository>");
}
}
@Test
void shouldAddRepositories() throws Exception {
ClassPathResource resource = new ClassPathResource("sample-pom.xml");
try (InputStream is = resource.getInputStream()) {
byte[] bytes = MavenBuildSystem.doWithProjection(projector, is, Pom.class, pom -> {
pom.deleteRepositories();
pom.setRepositories(RepositoryElementFactory.of(Repository.SNAPSHOT, Repository.MILESTONE));
});
assertThat(new String(bytes)).containsSubsequence("repositories", "<id>spring-snapshot</id>", "<snapshots>",
"<enabled>true</enabled>", "<releases>", "<enabled>false</enabled>", "spring-milestone");
}
}
}

View File

@@ -17,11 +17,8 @@ package org.springframework.data.release.build;
import static org.assertj.core.api.Assertions.*;
import java.util.Arrays;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.data.release.model.Iteration;
import org.springframework.data.release.model.Phase;
import org.springframework.data.release.model.Projects;
@@ -48,22 +45,6 @@ class UpdateInformationUnitTests {
Assertions.assertThatIllegalArgumentException().isThrownBy(() -> UpdateInformation.of(hopperM1, null));
}
@Test
void exposesMilestoneRepositoryForMilestone() {
assertThat(UpdateInformation.of(hopperM1, Phase.PREPARE).getRepository().getId())
.isEqualTo("spring-libs-milestone");
}
@Test
void exposesReleaseRepositoryForGA() {
Arrays.asList(Iteration.GA, Iteration.SR1).forEach(iteration -> {
TrainIteration trainIteration = new TrainIteration(ReleaseTrains.HOPPER, iteration);
assertThat(UpdateInformation.of(trainIteration, Phase.PREPARE).getRepository().getId())
.isEqualTo("spring-libs-release");
});
}
@Test
void calculatesProjectVersionToSetCorrectly() {
@@ -74,6 +55,32 @@ class UpdateInformationUnitTests {
assertThat(updateInformation.getProjectVersionToSet(Projects.JPA).toString()).isEqualTo("1.10.0.BUILD-SNAPSHOT");
}
@Test
void milestoneReposContainedForMilestoneRelease() {
UpdateInformation updateInformation = UpdateInformation.of(hopperM1, Phase.PREPARE);
assertThat(updateInformation.getRepositories()).containsOnly(Repository.MILESTONE);
}
@Test
void noReposContainedForGaRelease() {
UpdateInformation updateInformation = UpdateInformation.of(new TrainIteration(ReleaseTrains.HOPPER, Iteration.GA),
Phase.PREPARE);
assertThat(updateInformation.getRepositories()).isEmpty();
}
@Test
void cleanupSetsMilestoneAndSnapshotRepos() {
UpdateInformation updateInformation = UpdateInformation.of(new TrainIteration(ReleaseTrains.HOPPER, Iteration.GA),
Phase.CLEANUP);
assertThat(updateInformation.getRepositories()).contains(Repository.MILESTONE, Repository.SNAPSHOT);
}
@Test // #155
void calculatesProjectCalverVersionToSetCorrectly() {

View File

@@ -14,18 +14,6 @@
<properties>
<jar.mainclass>org.springframework.shell.Bootstrap</jar.mainclass>
</properties>
<profiles>
<profile>
<id>profile</id>
<repositories>
<repository>
<id>spring-libs-snapshot</id>
<url>https://repo.spring.io/libs-snapshot</url>
</repository>
</repositories>
</profile>
</profiles>
<dependencies>
@@ -38,7 +26,7 @@
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
@@ -54,7 +42,7 @@
<artifactId>spring-shell</artifactId>
<version>1.1.0.BUILD-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.xmlbeam</groupId>
<artifactId>xmlprojector</artifactId>
@@ -67,7 +55,7 @@
<version>1.12.4</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
@@ -109,4 +97,4 @@
</repository>
</repositories>
</project>
</project>