#!/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()