From b4b09d40a797a72ca256f5a5cf6b31097dfb0078 Mon Sep 17 00:00:00 2001 From: Chris Sosa Date: Mon, 1 Nov 2010 14:36:38 -0700 Subject: [PATCH] Fix versioning logic in ctest to get the correct latest version. Change-Id: I2721bcd2da38b764ebe21dfb8fe7a39dd947075c BUG=8500 TEST=Ran it against all boards Review URL: http://codereview.chromium.org/4235001 --- bin/ctest.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/bin/ctest.py b/bin/ctest.py index 70dbec8ffe..c1c806e558 100755 --- a/bin/ctest.py +++ b/bin/ctest.py @@ -93,6 +93,19 @@ def ModifyBootDesc(download_folder, redirect_file=None): fileinput.close() +def _GreaterVersion(version_a, version_b): + """Returns the higher version number of two version number strings.""" + version_regex = re.compile('.*(\d+)\.(\d+)\.(\d+)\.(\d+).*') + version_a_tokens = version_regex.match(version_a).groups() + version_b_tokens = version_regex.match(version_b).groups() + for i in range(4): + (a, b) = (int(version_a_tokens[i]), int(version_b_tokens[i])) + if a != b: + if a > b: return version_a + return version_b + return version_a + + def GetLatestLinkFromPage(url, regex): """Returns the latest link from the given url that matches regex. @@ -102,12 +115,13 @@ def GetLatestLinkFromPage(url, regex): """ url_file = urllib.urlopen(url) url_html = url_file.read() + url_file.close() # Parses links with versions embedded. url_parser = HTMLDirectoryParser(regex=regex) url_parser.feed(url_html) - return max(url_parser.link_list) + return reduce(_GreaterVersion, url_parser.link_list) def GetNewestLinkFromZipBase(board, channel, zip_server_base):