Skip to content
Snippets Groups Projects
Commit 8060ad8c authored by Jürg Billeter's avatar Jürg Billeter
Browse files

tests/sources/git.py: Add track and fetch test with and without tag

parent 107269c1
No related branches found
No related tags found
1 merge request!291git.py: Make `ref` human readable
Pipeline #31377020 passed
......@@ -476,3 +476,50 @@ def test_ref_not_in_track_warn_error(cli, tmpdir, datafiles):
result = cli.run(project=project, args=['build', 'target.bst'])
result.assert_main_error(ErrorDomain.STREAM, None)
result.assert_task_error(ErrorDomain.PLUGIN, CoreWarnings.REF_NOT_IN_TRACK)
@pytest.mark.skipif(HAVE_GIT is False, reason="git is not available")
@pytest.mark.datafiles(os.path.join(DATA_DIR, 'template'))
@pytest.mark.parametrize("ref_format", ['sha1', 'git-describe'])
@pytest.mark.parametrize("tag,extra_commit", [(False, False), (True, False), (True, True)])
def test_track_fetch(cli, tmpdir, datafiles, ref_format, tag, extra_commit):
project = os.path.join(datafiles.dirname, datafiles.basename)
# Create the repo from 'repofiles' subdir
repo = create_repo('git', str(tmpdir))
ref = repo.create(os.path.join(project, 'repofiles'))
if tag:
repo.add_tag('tag')
if extra_commit:
repo.add_commit()
# Write out our test target
element = {
'kind': 'import',
'sources': [
repo.source_config()
]
}
element['sources'][0]['ref-format'] = ref_format
element_path = os.path.join(project, 'target.bst')
_yaml.dump(element, element_path)
# Track it
result = cli.run(project=project, args=['track', 'target.bst'])
result.assert_success()
element = _yaml.load(element_path)
new_ref = element['sources'][0]['ref']
if ref_format == 'git-describe' and tag:
# Check and strip prefix
prefix = 'tag-{}-g'.format(0 if not extra_commit else 1)
assert new_ref.startswith(prefix)
new_ref = new_ref[len(prefix):]
# 40 chars for SHA-1
assert len(new_ref) == 40
# Fetch it
result = cli.run(project=project, args=['fetch', 'target.bst'])
result.assert_success()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment