@@ -262,8 +262,9 @@ def pick_releases_to_test(
262262) -> list [Version ]:
263263 """Pick a handful of releases to test from a sorted list of supported releases."""
264264 # If the package has majors (or major-like releases, even if they don't do
265- # semver), we want to make sure we're testing them all. If not, we just pick
266- # the oldest, the newest, and a couple in between.
265+ # semver), we want to make sure we're testing them all (unless there's too
266+ # many). If not, we just pick the oldest, the newest, and a couple
267+ # in between.
267268 #
268269 # If there is a relevant prerelease, also test that in addition to the above.
269270 has_majors = len (set ([v .major for v in releases ])) > 1
@@ -283,12 +284,27 @@ def pick_releases_to_test(
283284 if release > releases_by_major [release .major ][1 ]:
284285 releases_by_major [release .major ][1 ] = release
285286
286- for i , (min_version , max_version ) in enumerate (releases_by_major .values ()):
287- filtered_releases .add (max_version )
288- if i == len (releases_by_major ) - 1 :
289- # If this is the latest major release, also check the lowest
290- # version of this version
291- filtered_releases .add (min_version )
287+ if len (releases_by_major ) > 5 :
288+ # This framework has a lot of majors. Pick a selection.
289+ releases = sorted (
290+ [max_version for (_ , max_version ) in releases_by_major .values ()]
291+ )
292+ filtered_releases = {
293+ releases [0 ], # oldest version supported
294+ releases [len (releases ) // 3 ],
295+ releases [
296+ len (releases ) // 3 * 2
297+ ], # two releases in between, roughly evenly spaced
298+ releases [- 1 ], # latest
299+ }
300+
301+ else :
302+ for i , (min_version , max_version ) in enumerate (releases_by_major .values ()):
303+ filtered_releases .add (max_version )
304+ if i == len (releases_by_major ) - 1 :
305+ # If this is the latest major release, also check the lowest
306+ # version of this version
307+ filtered_releases .add (min_version )
292308
293309 else :
294310 filtered_releases = {
0 commit comments