diff --git a/src/bld/java/rife/BldBuild.java b/src/bld/java/rife/BldBuild.java index 53e1b67..9b44732 100644 --- a/src/bld/java/rife/BldBuild.java +++ b/src/bld/java/rife/BldBuild.java @@ -32,7 +32,10 @@ public class BldBuild extends AbstractRife2Build { mainClass = "rife.bld.Cli"; version = VersionNumber.parse(FileUtils.readString(new File(srcMainResourcesDirectory(), "BLD_VERSION"))); - repositories = List.of(MAVEN_CENTRAL, RIFE2_RELEASES); + repositories = List.of(MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS); + + scope(test) + .include(dependency("com.uwyn.rife2", "bld-testing-helpers", version(1, 1, 0, "SNAPSHOT"))); var core_dir = new File(workDirectory(), "core"); var core_src_dir = new File(core_dir, "src"); diff --git a/src/test/java/rife/bld/operations/TestPublishOperation.java b/src/test/java/rife/bld/operations/TestPublishOperation.java index f35b2e8..de961a3 100644 --- a/src/test/java/rife/bld/operations/TestPublishOperation.java +++ b/src/test/java/rife/bld/operations/TestPublishOperation.java @@ -4,9 +4,9 @@ */ package rife.bld.operations; +import rife.bld.testing.RetryTest; import rife.json.Json; import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnOs; import org.junit.jupiter.api.condition.OS; @@ -32,46 +32,39 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.*; public class TestPublishOperation { - static File reposiliteJar_ = null; + static volatile File reposiliteJar_ = null; + + static synchronized void ensureReposilite() throws Exception { + if (reposiliteJar_ != null && reposiliteJar_.exists()) { + return; + } - @BeforeAll - static void downloadReposilite() - throws Exception { reposiliteJar_ = File.createTempFile("reposilite", "jar"); reposiliteJar_.deleteOnExit(); - var url = "https://maven.reposilite.com/releases/com/reposilite/reposilite/3.4.0/reposilite-3.4.0-all.jar"; + var url = new URL("https://maven.reposilite.com/releases/com/reposilite/reposilite/3.4.0/reposilite-3.4.0-all.jar"); System.out.print("Downloading: " + url + " ..."); System.out.flush(); - // the reposilite CDN intermittently rate-limits with a 403 when - // several matrix jobs download at the same time, retry with a - // backoff before giving up - var attempts = 5; - for (var attempt = 1; ; ++attempt) { - try { - var connection = (HttpURLConnection) new URL(url).openConnection(); - connection.setRequestProperty("User-Agent", "bld-tests"); - connection.setConnectTimeout(30_000); - connection.setReadTimeout(60_000); - try (var input = connection.getInputStream()) { - FileUtils.copy(input, reposiliteJar_); - } - break; - } catch (IOException e) { - if (attempt >= attempts) { - throw e; - } - System.out.print(" retrying (" + e.getMessage() + ") ..."); - System.out.flush(); - Thread.sleep(attempt * 3_000L); - } + var connection = (HttpURLConnection) url.openConnection(); + connection.setRequestProperty("User-Agent", "bld-tests"); + connection.setConnectTimeout(30_000); + connection.setReadTimeout(60_000); + + int code = connection.getResponseCode(); + if (code >= 400) { + throw new IOException("Server returned HTTP response code: " + code + " for URL: " + url); + } + + try (var in = connection.getInputStream()) { + FileUtils.copy(in, reposiliteJar_); + } finally { + connection.disconnect(); } System.out.println("done"); } @AfterAll - static void deleteReposilite() - throws Exception { + static void deleteReposilite() { if (reposiliteJar_ != null) { reposiliteJar_.delete(); reposiliteJar_ = null; @@ -154,10 +147,12 @@ public class TestPublishOperation { assertEquals(19, operation3.publishProperties().mavenCompilerTarget()); } - @Test + @RetryTest(value = 5, delay = 5) @DisabledOnOs({OS.WINDOWS}) void testPublishRelease() throws Exception { + ensureReposilite(); + var tmp1 = Files.createTempDirectory("test1").toFile(); var tmp2 = Files.createTempDirectory("test2").toFile(); var tmp_reposilite = Files.createTempDirectory("test").toFile(); @@ -421,10 +416,12 @@ public class TestPublishOperation { } } - @Test + @RetryTest(value = 5, delay = 5) @DisabledOnOs({OS.WINDOWS}) void testPublishSnapshot() throws Exception { + ensureReposilite(); + var tmp1 = Files.createTempDirectory("test1").toFile(); var tmp2 = Files.createTempDirectory("test2").toFile(); var tmp_reposilite = Files.createTempDirectory("test").toFile();