@@ -51,8 +51,7 @@ def test_selects_previous_gradle_release_when_newest_is_too_new(self) -> None:
5151 self .assertEqual (result .returncode , 0 , result .stderr )
5252 outputs = self .parse_outputs (result .stdout )
5353 self .assertEqual (outputs ["version" ], "9.4.1" )
54- self .assertEqual (outputs ["published_at" ], "2026-04-22T11:00:00Z" )
55- self .assertEqual (outputs ["cutoff_at" ], "2026-04-22T12:00:00Z" )
54+ self .assertEqual (outputs ["published_at" ], "2026-04-22" )
5655
5756 def test_reports_when_no_eligible_gradle_release_exists (self ) -> None :
5857 result = self .run_script (
@@ -124,7 +123,104 @@ def test_exact_48_hour_boundary_is_accepted(self) -> None:
124123 self .assertEqual (result .returncode , 0 , result .stderr )
125124 outputs = self .parse_outputs (result .stdout )
126125 self .assertEqual (outputs ["version" ], "3.5.5" )
127- self .assertEqual (outputs ["published_at" ], "2026-04-22T12:00:00Z" )
126+ self .assertEqual (outputs ["published_at" ], "2026-04-22" )
127+
128+
129+ def test_ga_version_overrides_current_prerelease (self ) -> None :
130+ result = self .run_script (
131+ "select-maven" ,
132+ "--now" ,
133+ NOW ,
134+ "--group-id" ,
135+ "org.apache.maven" ,
136+ "--artifact-id" ,
137+ "apache-maven" ,
138+ "--search-response-file" ,
139+ str (FIXTURES / "maven-ga-replaces-beta.json" ),
140+ "--prerelease-pattern" ,
141+ "alpha" ,
142+ "--prerelease-pattern" ,
143+ "beta" ,
144+ "--prerelease-pattern" ,
145+ "rc" ,
146+ "--current-version" ,
147+ "4.0.0-beta-3" ,
148+ )
149+
150+ self .assertEqual (result .returncode , 0 , result .stderr )
151+ outputs = self .parse_outputs (result .stdout )
152+ self .assertEqual (outputs ["found" ], "true" )
153+ self .assertEqual (outputs ["version" ], "4.0.0" )
154+ self .assertEqual (outputs ["published_at" ], "2026-04-20" )
155+
156+ def test_keeps_current_version_when_higher_than_eligible (self ) -> None :
157+ result = self .run_script (
158+ "select-maven" ,
159+ "--now" ,
160+ NOW ,
161+ "--group-id" ,
162+ "org.apache.maven" ,
163+ "--artifact-id" ,
164+ "apache-maven" ,
165+ "--search-response-file" ,
166+ str (FIXTURES / "maven-newest-too-new.json" ),
167+ "--prerelease-pattern" ,
168+ "alpha" ,
169+ "--prerelease-pattern" ,
170+ "beta" ,
171+ "--prerelease-pattern" ,
172+ "rc" ,
173+ "--current-version" ,
174+ "4.0.0-beta-3" ,
175+ )
176+
177+ self .assertEqual (result .returncode , 0 , result .stderr )
178+ outputs = self .parse_outputs (result .stdout )
179+ self .assertEqual (outputs ["found" ], "true" )
180+ self .assertEqual (outputs ["version" ], "4.0.0-beta-3" )
181+ self .assertEqual (outputs ["published_at" ], "" )
182+
183+ def test_updates_when_eligible_version_is_higher_than_current (self ) -> None :
184+ result = self .run_script (
185+ "select-maven" ,
186+ "--now" ,
187+ NOW ,
188+ "--group-id" ,
189+ "org.apache.maven.plugins" ,
190+ "--artifact-id" ,
191+ "maven-surefire-plugin" ,
192+ "--search-response-file" ,
193+ str (FIXTURES / "surefire-boundary.json" ),
194+ "--prerelease-pattern" ,
195+ "alpha" ,
196+ "--prerelease-pattern" ,
197+ "beta" ,
198+ "--current-version" ,
199+ "3.5.4" ,
200+ )
201+
202+ self .assertEqual (result .returncode , 0 , result .stderr )
203+ outputs = self .parse_outputs (result .stdout )
204+ self .assertEqual (outputs ["found" ], "true" )
205+ self .assertEqual (outputs ["version" ], "3.5.5" )
206+ self .assertEqual (outputs ["published_at" ], "2026-04-22" )
207+
208+ def test_keeps_current_version_when_no_eligible_version_exists (self ) -> None :
209+ result = self .run_script (
210+ "select-gradle" ,
211+ "--now" ,
212+ NOW ,
213+ "--versions-file" ,
214+ str (FIXTURES / "gradle-no-eligible.json" ),
215+ "--current-version" ,
216+ "9.0.0" ,
217+ )
218+
219+ self .assertEqual (result .returncode , 0 , result .stderr )
220+ outputs = self .parse_outputs (result .stdout )
221+ self .assertEqual (outputs ["found" ], "true" )
222+ self .assertEqual (outputs ["version" ], "9.0.0" )
223+ self .assertEqual (outputs ["published_at" ], "" )
128224
129225
130226 def run_validate_lockfiles (
0 commit comments