Skip to content

Commit

Permalink
gnomechecker: Don't crash if no versions satisfy constraint
Browse files Browse the repository at this point in the history
Fixes #155
  • Loading branch information
wjt committed Sep 5, 2022
1 parent 6ed0a7b commit db940d5
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 11 deletions.
25 changes: 14 additions & 11 deletions src/checkers/gnomechecker.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,18 +70,21 @@ async def check(self, external_data: ExternalBase):
if constraints:
filtered_versions = filter_versions(filtered_versions, constraints)

if stable_only:
try:
latest_version = list(filter(_is_stable, filtered_versions))[-1]
except IndexError:
try:
if stable_only:
try:
latest_version = list(filter(_is_stable, filtered_versions))[-1]
except IndexError:
latest_version = filtered_versions[-1]
log.warning(
"Couldn't find any stable version for %s, selecting latest %s",
project_name,
latest_version,
)
else:
latest_version = filtered_versions[-1]
log.warning(
"Couldn't find any stable version for %s, selecting latest %s",
project_name,
latest_version,
)
else:
latest_version = filtered_versions[-1]
except IndexError as e:
raise CheckerQueryError("No matching versions") from e

proj_files = downloads[project_name][latest_version]

Expand Down
17 changes: 17 additions & 0 deletions tests/org.gnome.baobab.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,23 @@
}
}
]
},
{
"name" : "cairo-static",
"sources" : [
{
"type": "archive",
"url": "https://gitlab.freedesktop.org/cairo/cairo/-/archive/1.17.6/cairo-1.17.6.tar.gz",
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
"x-checker-data": {
"type": "gnome",
"name": "cairo",
"versions": {
">": "9999.0.0"
}
}
}
]
}
]
}
4 changes: 4 additions & 0 deletions tests/test_gnomechecker.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ async def test_check(self):
ext_data = await checker.check()

for data in ext_data:
if data.filename == "cairo-1.17.6.tar.gz":
self.assertIsNone(data.new_version)
continue

self.assertIsNotNone(data.new_version)
self.assertIsNotNone(data.new_version.checksum)
self.assertIsInstance(data.new_version.checksum, MultiDigest)
Expand Down

0 comments on commit db940d5

Please sign in to comment.