| #!/usr/bin/env vpython3 | 
 | # Copyright 2020 The Chromium Authors | 
 | # Use of this source code is governed by a BSD-style license that can be | 
 | # found in the LICENSE file. | 
 |  | 
 | import json | 
 | import os | 
 | import sys | 
 | import unittest | 
 | from mock import patch  # pylint: disable=import-error | 
 |  | 
 | sys.path.append( | 
 |     os.path.join( | 
 |         os.path.dirname(__file__), os.pardir, os.pardir, 'third_party', | 
 |         'catapult', 'common', 'py_utils')) | 
 | # pylint: disable=wrong-import-position,import-error | 
 | from py_utils import tempfile_ext | 
 |  | 
 | import update_cts | 
 | import cts_utils | 
 |  | 
 | from cts_utils_test import CONFIG_DATA | 
 |  | 
 |  | 
 | class UpdateCTSTest(unittest.TestCase): | 
 |   """Unittests for update_cts.py.""" | 
 |  | 
 |   @patch('devil.utils.cmd_helper.GetCmdOutput') | 
 |   def testUpdateCtsConfigFileOrigins(self, cmd_mock): | 
 |     with tempfile_ext.NamedTemporaryDirectory() as repoRoot: | 
 |  | 
 |       cmd_mock.return_value = """ | 
 |       hash        refs/tags/platform-1.0_r6 | 
 |       hash        refs/tags/platform-1.0_r7 | 
 |       hash        refs/tags/platform-1.0_r9 | 
 |       hash        refs/tags/platform-2.0_r2 | 
 |       hash        refs/tags/platform-2.0_r3 | 
 |       """ | 
 |  | 
 |       expected_config_file = json.loads(CONFIG_DATA['json']) | 
 |       expected_config_file['platform1']['arch']['arch1'][ | 
 |           'unzip_dir'] = 'arch1/path/platform1_r9' | 
 |       expected_config_file['platform1']['arch']['arch2'][ | 
 |           'unzip_dir'] = 'arch1/path/platform1_r9' | 
 |       expected_config_file['platform2']['arch']['arch1'][ | 
 |           'unzip_dir'] = 'arch1/path/platform2_r3' | 
 |       expected_config_file['platform2']['arch']['arch2'][ | 
 |           'unzip_dir'] = 'arch1/path/platform2_r3' | 
 |  | 
 |  | 
 |       config_path = os.path.join(repoRoot, cts_utils.TOOLS_DIR, | 
 |                                  cts_utils.CONFIG_FILE) | 
 |       os.makedirs(os.path.dirname(config_path)) | 
 |       with open(config_path, 'w') as f: | 
 |         f.write(CONFIG_DATA['json']) | 
 |  | 
 |       cts_updater = update_cts.UpdateCTS(repoRoot) | 
 |       cts_updater.update_cts_download_origins_cmd() | 
 |  | 
 |       with open(config_path) as f: | 
 |         actual_config_file = json.load(f) | 
 |  | 
 |       self.assertEqual(expected_config_file, actual_config_file) | 
 |  | 
 |  | 
 | if __name__ == '__main__': | 
 |   unittest.main() |