add test for lockfile support

This commit adds a test that check the creation, effectiveness and
update of a lockfile. Testing this functionality via the dump plugin is
sufficient, as the plugin directly uses the checkout workflow.

Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
[Jan: fix over-long lines and removed assert brackets]
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
Felix Moessbauer 2023-04-23 11:42:28 +02:00 committed by Jan Kiszka
parent 7c0953c08e
commit e2bf6d74df

View File

@ -120,3 +120,44 @@ def test_dump(changedir, tmpdir, capsys):
shutil.rmtree('%s/build' % tdir, ignore_errors=True) shutil.rmtree('%s/build' % tdir, ignore_errors=True)
kas.kas(('checkout %s' % outfile).split()) kas.kas(('checkout %s' % outfile).split())
assert os.path.exists('build/conf/local.conf') assert os.path.exists('build/conf/local.conf')
def test_lockfile(changedir, tmpdir, capsys):
tdir = str(tmpdir.mkdir('test_commands'))
shutil.rmtree(tdir, ignore_errors=True)
shutil.copytree('tests/test_repo_includes', tdir)
os.chdir(tdir)
# no lockfile yet, branches are floating
kas.kas('dump test.yml'.split())
rawspec = yaml.safe_load(capsys.readouterr().out)
assert rawspec['repos']['externalrepo']['refspec'] == 'master'
# create lockfile
kas.kas('dump --lock --inplace test.yml'.split())
assert os.path.exists('test.lock.yml')
# lockfile is considered during import, expect pinned branches
kas.kas('dump test.yml'.split())
lockspec = yaml.safe_load(capsys.readouterr().out)
assert lockspec['overrides']['repos']['externalrepo']['refspec'] \
!= 'master'
# insert older refspec into lockfile (kas 3.2 tag)
test_refspec = 'dc44638cd87c4d0045ea2ca441e682f3525d8b91'
lockspec['overrides']['repos']['externalrepo']['refspec'] = test_refspec
with open('test.lock.yml', 'w') as f:
yaml.safe_dump(lockspec, f)
# check if repo is moved to specified commit
kas.kas('dump test.yml'.split())
lockspec = yaml.safe_load(capsys.readouterr().out)
assert lockspec['overrides']['repos']['externalrepo']['refspec'] \
== test_refspec
# update lockfile, check if repo is pinned to other commit
kas.kas('dump --lock --inplace --update test.yml'.split())
with open('test.lock.yml', 'r') as f:
lockspec = yaml.safe_load(f)
assert lockspec['overrides']['repos']['externalrepo']['refspec'] \
!= test_refspec