def test_unsupported_set_of_fields(self): variants = [ common_pb2.GitilesCommit(), common_pb2.GitilesCommit(host='gerrit.example.com'), common_pb2.GitilesCommit(host='gerrit.example.com', project='project'), common_pb2.GitilesCommit(host='gerrit.example.com', id='a', ref='x'), common_pb2.GitilesCommit(host='gerrit.example.com', id='a', position=1), ] for msg in variants: self.assert_invalid(msg, r'unsupported set of fields')
def test_valid_ref(self): msg = common_pb2.GitilesCommit( host='gerrit.example.com', project='project', ref='refs/heads/master', ) self.assert_valid(msg)
def test_valid_id(self): msg = common_pb2.GitilesCommit( host='gerrit.example.com', project='project', id=('a' * 40), ) self.assert_valid(msg)
def test_invalid_ref(self): msg = common_pb2.GitilesCommit( host='gerrit.example.com', project='project', ref='master', ) self.assert_invalid(msg, r'ref: must start with "refs/"')
def test_id_or_ref(self): msg = common_pb2.GitilesCommit( host='gerrit.example.com', project='project', ) with self.assertRaisesRegexp(validation.Error, r'id or ref is required'): validation.validate_gitiles_commit(msg, require_ref=False)
def test_output_gitiles_commit(self): msg = rpc_pb2.BuildPredicate( output_gitiles_commit=common_pb2.GitilesCommit( host='gerrit.example.com', project='project', id=('a' * 40), ), ) self.assert_valid(msg)
def test_invalid_id(self): msg = common_pb2.GitilesCommit( host='gerrit.example.com', project='project', ref='refs/heads/master', id='deadbeef', ) self.assert_invalid(msg, r'id: does not match r"')
def test_gitiles_commit_incomplete(self): msg = rpc_pb2.ScheduleBuildRequest( builder=build_pb2.BuilderID(project='chromium', bucket='try', builder='linux-rel'), gitiles_commit=common_pb2.GitilesCommit(host='gerrit.example.com', project='project'), ) self.assert_invalid(msg, r'gitiles_commit\.ref: required')
def test_position_without_ref(self): msg = common_pb2.GitilesCommit( host='gerrit.example.com', project='project', id='a' * 40, position=1, ) with self.assertRaisesRegexp(validation.Error, r'position: requires ref'): validation.validate_gitiles_commit(msg, require_ref=False)
def test_gitiles_commit_without_id(self): gitiles_commit = common_pb2.GitilesCommit( host='gitiles.example.com', project='chromium/src', ref='refs/heads/master', ) build = self.add(dict(gitiles_commit=gitiles_commit)) self.assertFalse( any(t.startswith('buildset:commit') for t in build.tags)) self.assertFalse(any( t.startswith('gititles_ref:') for t in build.tags))
def parse_gitiles_commit_buildset(buildset): # pragma: no cover # Example: # commit/gitiles/chromium.googlesource.com/chromium/src/+/ # 4fa74ef7511f4167d15a5a6d464df06e41ffbd70 m = RE_BUILDSET_GITILES_COMMIT.match(buildset) if not m: return None return common_pb2.GitilesCommit( host=m.group(1), project=m.group(2), id=m.group(3), )
def test_put_with_commit(self, add_async): buildset = ( 'commit/gitiles/gitiles.example.com/chromium/src/+/' 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ) buildset_tag = 'buildset:' + buildset gitiles_ref_tag = 'gitiles_ref:refs/heads/master' gitiles_commit = common_pb2.GitilesCommit( host='gitiles.example.com', project='chromium/src', ref='refs/heads/master', id='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', ) build = test_util.build( id=1, input=dict(gitiles_commit=gitiles_commit), tags=[dict(key='t', value='0')], ) build.tags.append(buildset_tag) build.tags.append(gitiles_ref_tag) build.tags.sort() add_async.return_value = future(build) req = { 'client_operation_id': '42', 'bucket': 'luci.chromium.try', 'tags': [buildset_tag, gitiles_ref_tag, 't:0'], 'parameters_json': json.dumps({api_common.BUILDER_PARAMETER: 'linux'}), } resp = self.call_api('put', req).json_body add_async.assert_called_once_with( creation.BuildRequest( schedule_build_request=rpc_pb2.ScheduleBuildRequest( builder=dict( project='chromium', bucket='try', builder='linux', ), gitiles_commit=gitiles_commit, tags=[dict(key='t', value='0')], request_id='42', properties=dict(), ), parameters={}, ) ) self.assertEqual(resp['build']['id'], '1') self.assertIn(buildset_tag, resp['build']['tags']) self.assertIn(gitiles_ref_tag, resp['build']['tags']) self.assertIn('t:0', resp['build']['tags'])
def test_gitiles_commit(self): gitiles_commit = common_pb2.GitilesCommit( host='gitiles.example.com', project='chromium/src', ref='refs/heads/master', id='b7a757f457487cd5cfe2dae83f65c5bc10e288b7', position=1, ) build = self.add(dict(gitiles_commit=gitiles_commit)) bs = ('commit/gitiles/gitiles.example.com/chromium/src/+/' 'b7a757f457487cd5cfe2dae83f65c5bc10e288b7') self.assertIn('buildset:' + bs, build.tags) self.assertIn('gitiles_ref:refs/heads/master', build.tags)
def test_host_and_project(self): msg = common_pb2.GitilesCommit(host='gerrit.example.com', project='project') self.assert_invalid(msg, 'ref: required')
def test_empty(self): msg = common_pb2.GitilesCommit() self.assert_invalid(msg, 'host: required')