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