blob: 165a7eed389d79d528267914f17a671443cb7b0d [file] [log] [blame]
# Copyright 2020 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
"""Full test of repo functionality in checkout module."""
from recipe_engine import post_process
DEPS = [
'fuchsia/status_check',
'pigweed/checkout',
'pigweed/cq_deps',
'recipe_engine/path',
'recipe_engine/properties',
'recipe_engine/step',
]
REPO = 'https://pigweed.googlesource.com/pigweed_name'
PYTHON_VERSION_COMPATIBILITY = "PY3"
def RunSteps(api): # pylint: disable=invalid-name
api.checkout()
# These are determined using Python logic but don't actually show in the
# output. Adding them to the output both for coverage and to confirm their
# values.
with api.step.nest('root') as pres:
pres.step_summary_text = str(api.checkout.root)
with api.step.nest('repo_top') as pres:
pres.step_summary_text = str(api.checkout.repo_top)
with api.step.nest('use_repo') as pres:
pres.step_summary_text = str(api.checkout.use_repo)
with api.step.nest('changes'):
for i, change in enumerate(api.checkout.changes):
with api.step.nest(str(i)) as pres:
pres.step_summary_text = repr(change)
with api.step.nest('snapshot_to_dir'):
api.checkout.snapshot_to_dir(api.path['start_dir'].join('snapshot'))
def GenTests(api): # pylint: disable=invalid-name
"""Create tests."""
def cl(project, change, patchset=1, name='pigweed'):
return api.checkout.cl(
host='{}-review.googlesource.com'.format(name),
project=project,
change=change,
patchset=patchset,
)
yield (
api.status_check.test('ci')
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.manifest_test_data()
+ api.checkout.root_files('foo', 'bar', '.repo')
)
yield (
api.status_check.test('try')
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.try_test_data(REPO)
+ api.checkout.manifest_test_data()
+ api.checkout.root_files('foo', '.repo')
+ api.checkout.all_changes_applied()
+ api.post_process(
post_process.MustRun,
'checkout pigweed.no non-standard branch names',
)
)
yield (
api.status_check.test('try-multiple')
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.try_test_data(
gerrit_changes=[
cl('pigweed_name', 1234),
cl('default_name', 2345, name='default'),
]
)
+ api.checkout.manifest_test_data()
+ api.checkout.root_files('foo', '.repo')
+ api.checkout.all_changes_applied()
+ api.checkout.change_applied('pigweed:1234')
+ api.checkout.change_applied('default:2345')
)
yield (
api.status_check.test('try-multiple-cqdeps')
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.try_test_data(
git_repo='https://pigweed.googlesource.com/pigweed_name',
change_number=1234,
patch_set=1,
)
+ api.cq_deps.details(
'pigweed:1234',
message='Requires: default:2345',
prefix='checkout pigweed.change data.process gerrit changes.',
)
+ api.cq_deps.details(
'default:2345',
project='default_name',
prefix='checkout pigweed.change data.process gerrit changes.',
)
+ api.checkout.manifest_test_data()
+ api.checkout.root_files('foo', '.repo')
+ api.checkout.all_changes_applied()
+ api.checkout.change_applied('pigweed:1234')
+ api.checkout.change_applied('default:2345')
)
yield (
api.status_check.test('try-multiple-onenotapplied')
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.try_test_data(
gerrit_changes=[
cl('pigweed_name', 1234),
cl('default_name', 2345, name='default'),
cl('project-that-is-not-in-the-manifest', 3456),
]
)
+ api.checkout.manifest_test_data(name='pigweed')
+ api.checkout.root_files('foo', '.repo')
+ api.checkout.some_changes_applied()
+ api.checkout.change_not_applied('pigweed:3456')
)
yield (
api.status_check.test(
'try_repo_not_in_manifest', status='infra_failure'
)
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.try_test_data('https://foo.googlesource.com/bar')
+ api.checkout.manifest_test_data()
+ api.checkout.no_changes_applied()
)
yield (
api.status_check.test('try_manifest')
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.try_test_data(api.checkout.manifest_repo)
+ api.checkout.cl_branch('feature-not-in-manifest')
+ api.checkout.manifest_test_data()
+ api.checkout.root_files('foo')
+ api.checkout.all_changes_applied()
)
yield (
api.status_check.test('feature_branches_try')
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.try_test_data(REPO)
+ api.checkout.cl_branch('feature1')
+ api.checkout.manifest_has_matching_branch('feature1')
+ api.checkout.manifest_test_data()
+ api.checkout.all_changes_applied()
)
yield (
api.status_check.test('feature_branches_try_multiple_features')
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.try_test_data(
gerrit_changes=[
cl('pigweed_name', 1234),
cl('default_name', 2345, name='default'),
]
)
+ api.checkout.cl_branch('feature1', index=0)
+ api.checkout.cl_branch('feature2', index=1)
+ api.checkout.manifest_has_matching_branch('feature1')
+ api.checkout.manifest_test_data()
+ api.checkout.all_changes_applied()
+ api.post_process(
post_process.DoesNotRun,
'checkout pigweed.no non-standard branch names',
)
+ api.post_process(
post_process.DoesNotRun,
'checkout pigweed.not matching branch names',
)
)
yield (
api.status_check.test(
'feature_branches_try_multiple_matches', status='failure'
)
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.try_test_data(
gerrit_changes=[
cl('pigweed_name', 1234),
cl('default_name', 2345, name='default'),
]
)
+ api.checkout.cl_branch('feature1', index=0)
+ api.checkout.cl_branch('feature2', index=1)
+ api.checkout.manifest_has_matching_branch('feature1')
+ api.checkout.manifest_has_matching_branch('feature2')
+ api.checkout.all_changes_applied()
+ api.post_process(
post_process.DoesNotRun,
'checkout pigweed.not matching branch names',
)
)
yield (
api.status_check.test('feature_branches_try_no_matching')
+ api.properties(**api.checkout.repo_properties(match_branch=False))
+ api.checkout.try_test_data(
gerrit_changes=[
cl('pigweed_name', 1234),
cl('default_name', 2345, name='default'),
]
)
+ api.checkout.cl_branch('feature1', index=0)
+ api.checkout.cl_branch('feature2', index=1)
+ api.checkout.manifest_test_data()
+ api.checkout.all_changes_applied()
+ api.post_process(
post_process.MustRun, 'checkout pigweed.not matching branch names',
)
)
yield (
api.status_check.test('feature_branches_ci')
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.ci_test_data(
'https://pigweed.googlesource.com/pinned', branch='feature1'
)
+ api.checkout.manifest_has_matching_branch('feature1')
+ api.checkout.manifest_test_data()
)
yield (
api.status_check.test('no_trigger')
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.manifest_test_data()
)
yield (
api.status_check.test('prefix')
+ api.properties(**api.checkout.repo_properties())
+ api.checkout.try_test_data(
"https://foo.googlesource.com/prefix/suffix"
)
+ api.checkout.manifest_test_data()
+ api.checkout.all_changes_applied()
)