#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright 2014 The ChromiumOS Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Test translation of xbuddy names.""" import argparse import sys import download_images # On May 1, 2014: # latest : lumpy-release/R34-5500.132.0 # latest-beta : lumpy-release/R35-5712.43.0 # latest-official: lumpy-release/R36-5814.0.0 # latest-dev : lumpy-release/R36-5814.0.0 # latest-canary : lumpy-release/R36-5814.0.0 class ImageDownloaderBuildIDTest(object): """Test translation of xbuddy names.""" def __init__(self): parser = argparse.ArgumentParser() parser.add_argument( "-c", "--chromeos_root", dest="chromeos_root", help="Directory containing ChromeOS root.", ) options = parser.parse_known_args(sys.argv[1:])[0] if options.chromeos_root is None: self._usage(parser, "--chromeos_root must be set") self.chromeos_root = options.chromeos_root self.tests_passed = 0 self.tests_run = 0 self.tests_failed = 0 def _usage(self, parser, message): print("ERROR: " + message) parser.print_help() sys.exit(0) def print_test_status(self): print("----------------------------------------\n") print("Tests attempted: %d" % self.tests_run) print("Tests passed: %d" % self.tests_passed) print("Tests failed: %d" % self.tests_failed) print("\n----------------------------------------") def assert_failure(self, msg): print("Assert failure: %s" % msg) self.print_test_status() sys.exit(1) def assertIsNotNone(self, arg, arg_name): if arg is None: self.tests_failed = self.tests_failed + 1 self.assert_failure("%s is not None" % arg_name) def assertNotEqual(self, arg1, arg2, arg1_name, arg2_name): if arg1 == arg2: self.tests_failed = self.tests_failed + 1 self.assert_failure( "%s is not NotEqual to %s" % (arg1_name, arg2_name) ) def assertEqual(self, arg1, arg2, arg1_name, arg2_name): if arg1 != arg2: self.tests_failed = self.tests_failed + 1 self.assert_failure( "%s is not Equal to %s" % (arg1_name, arg2_name) ) def test_one_id(self, downloader, test_id, result_string, exact_match): print("Translating '%s'" % test_id) self.tests_run = self.tests_run + 1 result = downloader.GetBuildID(self.chromeos_root, test_id) # Verify that we got a build id back. self.assertIsNotNone(result, "result") # Verify that the result either contains or exactly matches the # result_string, depending on the exact_match argument. if exact_match: self.assertEqual(result, result_string, "result", result_string) else: self.assertNotEqual( result.find(result_string), -1, "result.find", "-1" ) self.tests_passed = self.tests_passed + 1 def test_get_build_id(self): """Test that the actual translating of xbuddy names is working properly.""" downloader = download_images.ImageDownloader(log_level="quiet") self.test_one_id( downloader, "remote/lumpy/latest-dev", "lumpy-release/R", False ) self.test_one_id( downloader, "remote/trybot-lumpy-release-afdo-use/R35-5672.0.0-b86", "trybot-lumpy-release-afdo-use/R35-5672.0.0-b86", True, ) self.test_one_id( downloader, "remote/lumpy-release/R35-5672.0.0", "lumpy-release/R35-5672.0.0", True, ) self.test_one_id( downloader, "remote/lumpy/latest-dev", "lumpy-release/R", False ) self.test_one_id( downloader, "remote/lumpy/latest-official", "lumpy-release/R", False ) self.test_one_id( downloader, "remote/lumpy/latest-beta", "lumpy-release/R", False ) self.print_test_status() if __name__ == "__main__": tester = ImageDownloaderBuildIDTest() tester.test_get_build_id()