diff --git a/tests/test_commands.py b/tests/test_commands.py index d08988b..57edf54 100644 --- a/tests/test_commands.py +++ b/tests/test_commands.py @@ -120,3 +120,44 @@ def test_dump(changedir, tmpdir, capsys): shutil.rmtree('%s/build' % tdir, ignore_errors=True) kas.kas(('checkout %s' % outfile).split()) 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