def test_max_version(): ret = utils.max_version("1.0.0") assert ret == "1.0.0" ret = utils.max_version(["1.0.0", "1.0.1", "2.0.0"]) assert ret == "2.0.0" ret = utils.max_version(["1.1.0", "2.1.1", "2.0.0"]) assert ret == "2.1.1" ret = utils.max_version( ["2.9.10.1", "2.9.10.4", "2.9.10", "2.8.11.5", "2.8.11", "2.8.11.2"]) assert ret == "2.9.10.4" ret = utils.max_version(["2.9.10", "2.9.10.4"]) assert ret == "2.9.10.4"
def suggest_version(results, pkg_aliases={}): """Provide version suggestions""" pkg_fix_map = {} sug_map = {} if not pkg_aliases: pkg_aliases = {} for res in results: if isinstance(res, dict): full_pkg = res.get("package") fixed_location = res.get("fix_version") else: package_issue = res.package_issue full_pkg = package_issue.affected_location.package fixed_location = package_issue.fixed_location if package_issue.affected_location.vendor: full_pkg = "{}:{}".format( package_issue.affected_location.vendor, package_issue.affected_location.package, ) # De-alias package names full_pkg = pkg_aliases.get(full_pkg, full_pkg) version_upgrades = pkg_fix_map.get(full_pkg, set()) version_upgrades.add(fixed_location) pkg_fix_map[full_pkg] = version_upgrades for k, v in pkg_fix_map.items(): if v: mversion = max_version(list(v)) if mversion: sug_map[k] = mversion return sug_map