def test_get_current_branch__detached_head_state(self, log_warning_mock): self.assertIsNotNone(sourcecontrol.Git().get_current_branch()) p = subprocess.Popen(['git', 'rev-parse', 'HEAD'], stdout=subprocess.PIPE) stdout, _ = p.communicate() commit_of_head = stdout.decode().strip() p = subprocess.Popen(['git', 'checkout', commit_of_head], stdout=subprocess.PIPE) p.communicate() self.assertEqual('default', sourcecontrol.Git().get_current_branch())
def test_fetch_remote_branches__git_cmd_failed(self, _run_cmd_mock): _run_cmd_mock.return_value = '', '', 1 actual = sourcecontrol.Git().fetch_remote_branches('develop') _run_cmd_mock.assert_called_once_with(['git', 'fetch', 'develop'], handle_exitcode=False) self.assertFalse(actual)
def test_error_handler_for_exit_code_127(self, mock_exec_cmd): stdout = "" stderr = "git not installed" exit_code = 127 mock_exec_cmd.return_value = stdout, stderr, exit_code self.assertRaises(NoSourceControlError, sourcecontrol.Git().get_version_label)
def test_set_up_ignore_file_file_exists(self): with open('.gitignore', 'w') as f: f.write('line1\n') f.write('line2\n') sourcecontrol.Git().set_up_ignore_file() with open('.gitignore', 'r') as f: f = f.readlines() self.assertEqual(f[0], 'line1\n') self.assertEqual(f[1], 'line2\n')
def test_verify_url_is_a_codecommit_url__valid_urls(self): valid_urls = [ 'https://git-codecommit.us-east-1.amazonaws.com', 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/github-tests-test-1', 'https://git-codecommit.us-east-1.amazonaws.com.cn/v1/repos/github-tests-test-1', 'ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/github-tests-test-1', 'git-codecommit..amazonaws.com', 'git-codecommit.us-east-1.amazonaws.com/v1/repos/github-tests-test-1', ] for url in valid_urls: sourcecontrol.Git().verify_url_is_a_codecommit_url(url)
def test_setup_codecommit_cred_config__non_windows(self, _run_cmd_mock): sourcecontrol.Git().setup_codecommit_cred_config() _run_cmd_mock.assert_has_calls([ mock.call([ 'git', 'config', '--local', '--replace-all', 'credential.UseHttpPath', 'true' ]), mock.call([ 'git', 'config', '--local', '--replace-all', 'credential.helper', '!aws codecommit credential-helper $@' ]) ])
def test_get_current_repository__git_cmd_failed( self, get_current_branch_mock, _run_cmd_mock, ): get_current_branch_mock.return_value = 'develop' _run_cmd_mock.return_value = '', 'error message', 1 actual = sourcecontrol.Git().get_current_repository() get_current_branch_mock.assert_called_once_with() _run_cmd_mock.assert_called_once_with( ['git', 'config', '--get', 'branch.develop.remote'], handle_exitcode=False) self.assertIsNone(actual)
def test_get_current_repository_git_cmd_succeeded( self, get_current_branch_mock, _run_cmd_mock, ): get_current_branch_mock.return_value = 'develop' _run_cmd_mock.return_value = 'develop-remote', '', 0 actual = sourcecontrol.Git().get_current_repository() get_current_branch_mock.assert_called_once_with() _run_cmd_mock.assert_called_once_with( ['git', 'config', '--get', 'branch.develop.remote'], handle_exitcode=False) self.assertEqual('develop-remote', actual)
def test_verify_url_is_a_codecommit_url__invalid_urls(self): invalid_urls = [ 'https://github.us-east-1.amazonaws.com', 'ssh://git-codecommit.us-east-1.com/v1/repos/github-tests-test-1', 'https://github.com/rahulrajaram/dummy_repository.git', 'https://[email protected]/tutorials/tutorials.git.bitbucket.org.git', 'github..amazonaws.com', ] for url in invalid_urls: with self.assertRaises(NoSourceControlError) as context_manager: sourcecontrol.Git().verify_url_is_a_codecommit_url(url) self.assertEqual( 'Could not connect to repository located at {}'.format(url), context_manager.exception.message)
def test_get_current_branch(self): self.assertEqual('master', sourcecontrol.Git().get_current_branch())
def test_get_current_branch_detached_head(self): subprocess.call(['git', 'checkout', 'HEAD^']) self.assertEqual(sourcecontrol.Git().get_current_branch(), 'default')
def test_error_handler_for_exit_code_128(self, mock_exec_cmd): stdout = "" stderr = "Not a valid object name HEAD" exit_code = 128 mock_exec_cmd.return_value = stdout, stderr, exit_code self.assertRaises(CommandError, sourcecontrol.Git().get_version_label)
def test_set_up_ignore_no_file(self): self.assertFalse(os.path.isfile('.gitignore')) sourcecontrol.Git().set_up_ignore_file() self.assertTrue(os.path.isfile('.gitignore'))
def test_get_version_label(self): self.assertTrue( sourcecontrol.Git().get_version_label().startswith('app-v1-'))
def test_get_message(self): self.assertEqual(sourcecontrol.Git().get_message(), 'Hello')
def test_do_zip(self): sourcecontrol.Git().do_zip(os.getcwd() + os.path.sep + 'file.zip')
def test_error_handler_for_non_handled_exit_code(self, mock_exec_cmd): stdout = "" stderr = "git not installed" exit_code = 99999 mock_exec_cmd.return_value = stdout, stderr, exit_code self.assertRaises(CommandError, sourcecontrol.Git().get_version_label)
def test_get_name(self): self.assertEqual(sourcecontrol.Git().get_name(), 'git')