You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.8 KiB
Python
105 lines
2.8 KiB
Python
# Copyright 2024 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.
|
|
|
|
from recipe_engine import post_process as post
|
|
|
|
DEPS = [
|
|
'recipe_engine/json',
|
|
'recipe_engine/properties',
|
|
'recipe_engine/raw_io',
|
|
'recipe_engine/step',
|
|
'git',
|
|
]
|
|
|
|
REPO_URL = 'https://chromium.googlesource.com/v8/v8'
|
|
|
|
|
|
def RunSteps(api):
|
|
url = api.properties.get('url', REPO_URL)
|
|
ref = api.properties.get('ref', 'main')
|
|
tags = api.properties.get('tags', True)
|
|
branches = api.properties.get('branches', True)
|
|
|
|
result = api.git.ls_remote(url, ref, tags=tags, branches=branches)
|
|
api.step.empty('revision', step_text=result)
|
|
|
|
|
|
def GenTests(api):
|
|
|
|
def mock_ls_remote(ref, revision_refs, retcode=None):
|
|
lines = [f"{revision}\t{ref}" for revision, ref in revision_refs] + ['']
|
|
|
|
return api.step_data(
|
|
f'Retrieve revision for {ref}',
|
|
api.raw_io.stream_output_text(
|
|
'\n'.join(lines),
|
|
retcode=retcode or 0,
|
|
stream='stdout',
|
|
),
|
|
)
|
|
|
|
def test(name, cmd, *checks, **kwargs):
|
|
ref = cmd[-1]
|
|
|
|
return api.test(
|
|
name,
|
|
api.post_process(
|
|
post.StepCommandEquals,
|
|
f'Retrieve revision for {ref}',
|
|
cmd,
|
|
),
|
|
*checks,
|
|
api.post_process(post.DropExpectation),
|
|
**kwargs,
|
|
)
|
|
|
|
yield test(
|
|
'basic',
|
|
['git', 'ls-remote', '-t', '-b', REPO_URL, 'main'],
|
|
mock_ls_remote('main', [('badc0ffee0ded', 'refs/heads/main')]),
|
|
api.post_process(
|
|
post.StepTextEquals,
|
|
'revision',
|
|
'badc0ffee0ded',
|
|
),
|
|
)
|
|
|
|
yield test(
|
|
'no-tags',
|
|
['git', 'ls-remote', '-b', REPO_URL, 'main'],
|
|
api.properties(tags=False),
|
|
mock_ls_remote('main', [('badc0ffee0ded', 'refs/heads/main')]),
|
|
)
|
|
|
|
yield test(
|
|
'no-branches',
|
|
['git', 'ls-remote', '-t', REPO_URL, 'main'],
|
|
api.properties(branches=False),
|
|
mock_ls_remote('main', [('badc0ffee0ded', 'refs/heads/main')]),
|
|
)
|
|
|
|
yield test(
|
|
'multiple-refs',
|
|
['git', 'ls-remote', '-t', '-b', REPO_URL, '13.3.19'],
|
|
api.properties(ref='13.3.19'),
|
|
mock_ls_remote('13.3.19', [
|
|
('badc0ffee0ded', 'refs/heads/13.3.19'),
|
|
('c001c001c001d', 'refs/tags/13.3.19'),
|
|
]),
|
|
api.post_process(post.StatusFailure),
|
|
api.post_process(post.SummaryMarkdown,
|
|
"Multiple remote refs found for 13.3.19"),
|
|
status='FAILURE',
|
|
)
|
|
|
|
yield test(
|
|
'no-refs',
|
|
['git', 'ls-remote', '-t', '-b', REPO_URL, '13.3'],
|
|
api.properties(ref='13.3'),
|
|
mock_ls_remote('13.3', []),
|
|
api.post_process(post.StatusFailure),
|
|
api.post_process(post.SummaryMarkdown, "No remote ref found for 13.3"),
|
|
status='FAILURE',
|
|
)
|