def testUpdateConflict( self, mockCheckOutput, mockExists, mockIsdir, mockClone): mockIsdir.side_effect = lambda path: path == self.base_path mockExists.side_effect = lambda path: path == self.base_path mockCheckOutput.return_value = b'' mockClone.side_effect = [ gclient_scm.subprocess2.CalledProcessError( None, None, None, None, None), None, ] options = self.Options() scm = gclient_scm.GitWrapper(self.url, self.root_dir, self.relpath) scm.update(options, None, []) env = gclient_scm.scm.GIT.ApplyEnvVars({}) self.assertEqual( mockCheckOutput.mock_calls, [ mock.call( ['git', '-c', 'core.quotePath=false', 'ls-files'], cwd=self.base_path, env=env, stderr=-1), mock.call( ['git', 'rev-parse', '--verify', 'HEAD'], cwd=self.base_path, env=env, stderr=-1), ]) mockClone.assert_called_with( 'refs/remotes/origin/master', self.url, options) self.checkstdout('\n')
def testCheckCallAndFilter_RetryOnce(self, mockPopen, mockTime): cwd = 'bleh' args = ['boo', 'foo', 'bar'] test_string = 'ahah\naccb\nallo\naddb\n✔' mockPopen.side_effect = [ self.ProcessIdMock(test_string, 1), self.ProcessIdMock(test_string, 0), ] line_list = [] result = gclient_utils.CheckCallAndFilter(args, cwd=cwd, show_header=True, always_show_header=True, filter_fn=line_list.append, retry=True) self.assertEqual(result, test_string.encode('utf-8')) self.assertEqual(line_list, [ '________ running \'boo foo bar\' in \'bleh\'\n', 'ahah', 'accb', 'allo', 'addb', '✔', '________ running \'boo foo bar\' in \'bleh\' attempt 2 / 4\n', 'ahah', 'accb', 'allo', 'addb', '✔', ]) mockTime.assert_called_with(gclient_utils.RETRY_INITIAL_SLEEP) self.assertEqual(mockPopen.mock_calls, [ mock.call(args, cwd=cwd, stdout=subprocess2.PIPE, stderr=subprocess2.STDOUT, bufsize=0), mock.call(args, cwd=cwd, stdout=subprocess2.PIPE, stderr=subprocess2.STDOUT, bufsize=0), ]) self.assertEqual(self.stdout.getvalue(), b'') self.assertEqual( self.printfn.getvalue(), 'WARNING: subprocess \'"boo" "foo" "bar"\' in bleh failed; will retry ' 'after a short nap...')
def testReadHttpResponse_ServerError(self): conn = mock.Mock(req_params={'uri': 'uri', 'method': 'method'}) conn.request.return_value = (mock.Mock(status=500), b'') with self.assertRaises(gerrit_util.GerritError) as cm: gerrit_util.ReadHttpResponse(conn) self.assertEqual(500, cm.exception.http_status) self.assertEqual(gerrit_util.TRY_LIMIT, len(conn.request.mock_calls)) self.assertEqual([mock.call(1.5), mock.call(3)], gerrit_util.time_sleep.mock_calls)
def testGetFirstRemoteUrl(self, mockCapture): REMOTE_STRINGS = [('remote.origin.url E:\\foo\\bar', 'E:\\foo\\bar'), ('remote.origin.url /b/foo/bar', '/b/foo/bar'), ('remote.origin.url https://foo/bar', 'https://foo/bar'), ('remote.origin.url E:\\Fo Bar\\bax', 'E:\\Fo Bar\\bax'), ('remote.origin.url git://what/"do', 'git://what/"do')] FAKE_PATH = '/fake/path' mockCapture.side_effect = [question for question, _ in REMOTE_STRINGS] for _, answer in REMOTE_STRINGS: self.assertEqual( gclient_scm.SCMWrapper._get_first_remote_url(FAKE_PATH), answer) expected_calls = [ mock.call(['config', '--local', '--get-regexp', r'remote.*.url'], cwd=FAKE_PATH) for _ in REMOTE_STRINGS ] self.assertEqual(mockCapture.mock_calls, expected_calls)
def testGenerateAllChanges(self, mockQueryChanges): mockQueryChanges.side_effect = [ # First results page [ { '_number': '4' }, { '_number': '3' }, { '_number': '2', '_more_changes': True }, ], # Second results page, there are new changes, so second page includes # some results from the first page. [ { '_number': '2' }, { '_number': '1' }, ], # GenerateAllChanges queries again from the start to get any new # changes (5 in this case). [ { '_number': '5' }, { '_number': '4' }, { '_number': '3', '_more_changes': True }, ], ] changes = list(gerrit_util.GenerateAllChanges('host', 'params')) self.assertEqual([ { '_number': '4' }, { '_number': '3' }, { '_number': '2', '_more_changes': True }, { '_number': '1' }, { '_number': '5' }, ], changes) self.assertEqual([ mock.call('host', 'params', None, 500, None, 0), mock.call('host', 'params', None, 500, None, 3), mock.call('host', 'params', None, 500, None, 0), ], mockQueryChanges.mock_calls)