From c034829af78fee0077fea4e964d976a9c722254e Mon Sep 17 00:00:00 2001 From: "Flemming N. Larsen" Date: Tue, 20 Oct 2026 00:19:14 +0200 Subject: [PATCH] Prepare Rumble client 0.3.0 release --- CHANGELOG.md | 6 ++++++ gradle.properties | 2 +- .../dev/robocode/rumble/client/RumbleClient.java | 1 - .../robocode/rumble/client/RumbleClientTest.java | 13 +++++++++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 724b307..1b04698 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,10 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ## [Unreleased] +## [0.3.0] - 2026-10-20 + ### Changed - `submit` no longer posts result issues through the GitHub API and no longer needs a token. It writes each batch of results to a plain text file under `.rumble-client/submissions` (split by size as well as by the limit of sixty results) and prints the result form address; you paste the file into the form, press Create, and run `submit` again later to collect the receipt. Outside contributors could not create a repository-scoped token and the API dropped the submission label, so their issues were never processed. +### Fixed + +- Configuration validation no longer prints a stale message claiming battle execution is unavailable. + ## [0.2.0] - 2026-09-15 ### Fixed diff --git a/gradle.properties b/gradle.properties index 70bad90..58f05e6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group=dev.robocode.rumble -version=0.3.0-SNAPSHOT +version=0.3.0 tankRoyaleRunnerVersion=1.3.1 org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/src/main/java/dev/robocode/rumble/client/RumbleClient.java b/src/main/java/dev/robocode/rumble/client/RumbleClient.java index 56cc4ee..112b14e 100644 --- a/src/main/java/dev/robocode/rumble/client/RumbleClient.java +++ b/src/main/java/dev/robocode/rumble/client/RumbleClient.java @@ -119,7 +119,6 @@ static void run(final String[] arguments, final PrintStream output, final Runtim return; } output.printf("Configuration %s is valid for %s mode.%n", configurationPath, configuration.mode().displayName()); - output.println("Battle execution is not available yet."); } private static boolean hasOnlyArgument(final String[] arguments, final String option) { diff --git a/src/test/java/dev/robocode/rumble/client/RumbleClientTest.java b/src/test/java/dev/robocode/rumble/client/RumbleClientTest.java index ce67ccf..71962fd 100644 --- a/src/test/java/dev/robocode/rumble/client/RumbleClientTest.java +++ b/src/test/java/dev/robocode/rumble/client/RumbleClientTest.java @@ -1,5 +1,6 @@ package dev.robocode.rumble.client; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -46,6 +47,18 @@ void testUnitPositive_printsSuccessfulRuntimePreflight() throws IOException { assertTrue(bytes.toString().contains("OK Java (required 25): 25.0.1")); } + @Test + @Tag("Unit") + void testUnitPositive_validatesConfigurationWithoutStaleExecutionWarning() throws IOException { + final Path configurationPath = writePracticeConfiguration(); + final ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + + RumbleClient.run(new String[] {"--validate-config", configurationPath.toString()}, new PrintStream(bytes)); + + assertTrue(bytes.toString().contains("is valid for practice mode")); + assertFalse(bytes.toString().contains("Battle execution is not available yet.")); + } + @Test @Tag("Unit") void testUnitNegative_failsRuntimePreflightWhenAnyRuntimeIsUnavailable() {