12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #!/usr/bin/env vpython3
- # Copyright 2020 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.
- """Unit tests for git_migrate_default_branch.py."""
- import collections
- import os
- import sys
- import unittest
- from unittest import mock
- sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
- import git_migrate_default_branch
- class CMDFormatTestCase(unittest.TestCase):
- def setUp(self):
- self.addCleanup(mock.patch.stopall)
- def test_no_remote(self):
- def RunMock(*args):
- if args[0] == 'remote':
- return ''
- self.fail('did not expect such run git command: %s' % args[0])
- mock.patch('git_migrate_default_branch.git_common.run', RunMock).start()
- with self.assertRaisesRegexp(RuntimeError, 'Could not find any remote'):
- git_migrate_default_branch.main()
- def test_migration_not_ready(self):
- def RunMock(*args):
- if args[0] == 'remote':
- return 'origin\ngerrit'
- raise Exception('Did not expect such run git command: %s' % args[0])
- mock.patch('git_migrate_default_branch.git_common.run', RunMock).start()
- mock.patch('git_migrate_default_branch.git_common.repo_root',
- return_value='.').start()
- mock.patch('git_migrate_default_branch.scm.GIT.GetConfig',
- return_value='https://chromium.googlesource.com').start()
- mock.patch('git_migrate_default_branch.gerrit_util.GetProjectHead',
- return_value=None).start()
- with self.assertRaisesRegexp(RuntimeError, 'not migrated yet'):
- git_migrate_default_branch.main()
- def test_migration_no_master(self):
- def RunMock(*args):
- if args[0] == 'remote':
- return 'origin\ngerrit'
- if args[0] == 'fetch':
- return
- if args[0] == 'branch':
- return
- if args[0] == 'config':
- return
- raise Exception('Did not expect such run git command: %s' % args[0])
- mock_runs = mock.patch('git_migrate_default_branch.git_common.run',
- side_effect=RunMock).start()
- mock.patch('git_migrate_default_branch.git_common.repo_root',
- return_value='.').start()
- mock.patch('git_migrate_default_branch.scm.GIT.GetConfig',
- return_value='https://chromium.googlesource.com').start()
- mock.patch('git_migrate_default_branch.gerrit_util.GetProjectHead',
- return_value='refs/heads/main').start()
- BranchesInfo = collections.namedtuple('BranchesInfo',
- 'hash upstream commits behind')
- branches = {
- '': None, # always returned
- 'master': BranchesInfo('0000', 'origin/master', '0', '0'),
- 'feature': BranchesInfo('0000', 'master', '0', '0'),
- 'another_feature': BranchesInfo('0000', 'feature', '0', '0'),
- 'remote_feature': BranchesInfo('0000', 'origin/master', '0', '0'),
- }
- mock.patch('git_migrate_default_branch.git_common.get_branches_info',
- return_value=branches).start()
- mock_merge_base = mock.patch(
- 'git_migrate_default_branch.git_common.remove_merge_base',
- return_value=branches).start()
- git_migrate_default_branch.main()
- mock_merge_base.assert_any_call('feature')
- mock_merge_base.assert_any_call('remote_feature')
- mock_runs.assert_any_call('branch', '-m', 'master', 'main')
- mock_runs.assert_any_call('branch', '--set-upstream-to', 'main', 'feature')
- mock_runs.assert_any_call('branch', '--set-upstream-to', 'origin/main',
- 'remote_feature')
- if __name__ == '__main__':
- unittest.main()
|