123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- #!/usr/bin/env vpython3
- # Copyright 2022 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- import logging
- import os
- import shutil
- import sys
- import tempfile
- import unittest
- from unittest import mock
- DEPOT_TOOLS_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- sys.path.insert(0, DEPOT_TOOLS_ROOT)
- from testing_support import coverage_utils
- import utils
- class GitCacheTest(unittest.TestCase):
- def setUp(self):
- pass
- @mock.patch('subprocess.check_output', lambda x, **kwargs: b'foo')
- def testVersionWithGit(self):
- version = utils.depot_tools_version()
- self.assertEqual(version, 'git-foo')
- @mock.patch('subprocess.check_output')
- @mock.patch('os.path.getmtime', lambda x: 42)
- def testVersionWithNoGit(self, mock_subprocess):
- mock_subprocess.side_effect = Exception
- version = utils.depot_tools_version()
- self.assertEqual(version, 'recipes.cfg-42')
- @mock.patch('subprocess.check_output')
- @mock.patch('os.path.getmtime')
- def testVersionWithNoGit(self, mock_subprocess, mock_getmtime):
- mock_subprocess.side_effect = Exception
- mock_getmtime.side_effect = Exception
- version = utils.depot_tools_version()
- self.assertEqual(version, 'unknown')
- class ConfigDirTest(unittest.TestCase):
- @mock.patch('sys.platform', 'win')
- def testWin(self):
- self.assertEqual(DEPOT_TOOLS_ROOT, utils.depot_tools_config_dir())
- @mock.patch('sys.platform', 'darwin')
- def testMac(self):
- self.assertEqual(DEPOT_TOOLS_ROOT, utils.depot_tools_config_dir())
- @mock.patch('sys.platform', 'foo')
- def testOther(self):
- self.assertEqual(DEPOT_TOOLS_ROOT, utils.depot_tools_config_dir())
- @mock.patch('sys.platform', 'linux')
- @mock.patch.dict('os.environ', {})
- def testLinuxDefault(self):
- self.assertEqual(
- os.path.join(os.path.expanduser('~/.config'), 'depot_tools'),
- utils.depot_tools_config_dir())
- @mock.patch('sys.platform', 'linux')
- @mock.patch.dict('os.environ', {'XDG_CONFIG_HOME': '/my/home'})
- def testLinuxCustom(self):
- self.assertEqual(os.path.join('/my/home', 'depot_tools'),
- utils.depot_tools_config_dir())
- class ConfigPathTest(unittest.TestCase):
- def setUp(self):
- self.temp_dir = tempfile.mkdtemp(prefix='utils_test')
- self.config_dir = os.path.join(self.temp_dir, 'test_files')
- self.isfile = mock.Mock()
- self.move = mock.Mock()
- mock.patch('os.path.isfile', self.isfile).start()
- mock.patch('shutil.move', self.move).start()
- mock.patch('utils.depot_tools_config_dir',
- lambda: self.config_dir).start()
- self.addCleanup(mock.patch.stopall)
- self.addCleanup(shutil.rmtree, self.temp_dir)
- def testCreatesConfigDir(self):
- # Ensure "legacy path" doesn't exist so that nothing gets moved.
- def EnsureLegacyPathNotExists(path):
- return path != os.path.join(DEPOT_TOOLS_ROOT, 'metrics.cfg')
- self.isfile.side_effect = EnsureLegacyPathNotExists
- self.assertEqual(os.path.join(self.config_dir, 'metrics.cfg'),
- utils.depot_tools_config_path('metrics.cfg'))
- self.assertTrue(os.path.exists(self.config_dir))
- self.move.assert_not_called()
- def testMovesLegacy(self):
- # Ensure "legacy path" exists so that it gets moved.
- def EnsureLegacyPathExists(path):
- return path == os.path.join(DEPOT_TOOLS_ROOT, 'metrics.cfg')
- self.isfile.side_effect = EnsureLegacyPathExists
- self.assertEqual(os.path.join(self.config_dir, 'metrics.cfg'),
- utils.depot_tools_config_path('metrics.cfg'))
- self.move.assert_called_once_with(
- os.path.join(DEPOT_TOOLS_ROOT, 'metrics.cfg'),
- os.path.join(self.config_dir, 'metrics.cfg'))
- if __name__ == '__main__':
- logging.basicConfig(
- level=logging.DEBUG if '-v' in sys.argv else logging.ERROR)
- sys.exit(
- coverage_utils.covered_main(
- (os.path.join(DEPOT_TOOLS_ROOT, 'git_cache.py')),
- required_percentage=0))
|