diff options
author | Jürg Billeter <j@bitron.ch> | 2017-11-27 08:39:49 +0100 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2018-02-08 16:38:48 +0100 |
commit | 319af30c4426375c843d5c0113904657b5e48bf1 (patch) | |
tree | f64e55d6537db94f2e2b93d51a7e3d31d21aad4a | |
parent | 399f09b74c0014066fbb32c3a7db84e5b4ef51e5 (diff) | |
download | buildstream-319af30c4426375c843d5c0113904657b5e48bf1.tar.gz |
Add junction tests
47 files changed, 435 insertions, 0 deletions
diff --git a/tests/loader/junctions.py b/tests/loader/junctions.py new file mode 100644 index 000000000..0634b8aa2 --- /dev/null +++ b/tests/loader/junctions.py @@ -0,0 +1,262 @@ +import os +import pytest +import shutil + +from buildstream import _yaml +from buildstream._exceptions import LoadError, LoadErrorReason +from tests.testutils import cli, create_repo +from tests.testutils.site import HAVE_GIT + + +DATA_DIR = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + 'junctions', +) + + +def copy_subprojects(project, datafiles, subprojects): + for subproject in subprojects: + shutil.copytree(os.path.join(str(datafiles), subproject), os.path.join(str(project), subproject)) + + +@pytest.mark.datafiles(DATA_DIR) +def test_simple_pipeline(cli, datafiles): + project = os.path.join(str(datafiles), 'foo') + copy_subprojects(project, datafiles, ['base']) + + # Check that the pipeline includes the subproject element + element_list = cli.get_pipeline(project, ['target.bst']) + assert 'base.bst:target.bst' in element_list + + +@pytest.mark.datafiles(DATA_DIR) +def test_simple_build(cli, tmpdir, datafiles): + project = os.path.join(str(datafiles), 'foo') + copy_subprojects(project, datafiles, ['base']) + + checkoutdir = os.path.join(str(tmpdir), "checkout") + + # Build, checkout + result = cli.run(project=project, args=['build', 'target.bst']) + assert result.exit_code == 0 + result = cli.run(project=project, args=['checkout', 'target.bst', checkoutdir]) + assert result.exit_code == 0 + + # Check that the checkout contains the expected files from both projects + assert(os.path.exists(os.path.join(checkoutdir, 'base.txt'))) + assert(os.path.exists(os.path.join(checkoutdir, 'foo.txt'))) + + +@pytest.mark.datafiles(DATA_DIR) +def test_nested_simple(cli, tmpdir, datafiles): + foo = os.path.join(str(datafiles), 'foo') + copy_subprojects(foo, datafiles, ['base']) + + project = os.path.join(str(datafiles), 'nested') + copy_subprojects(project, datafiles, ['foo']) + + checkoutdir = os.path.join(str(tmpdir), "checkout") + + # Build, checkout + result = cli.run(project=project, args=['build', 'target.bst']) + assert result.exit_code == 0 + result = cli.run(project=project, args=['checkout', 'target.bst', checkoutdir]) + assert result.exit_code == 0 + + # Check that the checkout contains the expected files from all subprojects + assert(os.path.exists(os.path.join(checkoutdir, 'base.txt'))) + assert(os.path.exists(os.path.join(checkoutdir, 'foo.txt'))) + + +@pytest.mark.datafiles(DATA_DIR) +def test_nested_double(cli, tmpdir, datafiles): + foo = os.path.join(str(datafiles), 'foo') + copy_subprojects(foo, datafiles, ['base']) + + bar = os.path.join(str(datafiles), 'bar') + copy_subprojects(bar, datafiles, ['base']) + + project = os.path.join(str(datafiles), 'toplevel') + copy_subprojects(project, datafiles, ['base', 'foo', 'bar']) + + checkoutdir = os.path.join(str(tmpdir), "checkout") + + # Build, checkout + result = cli.run(project=project, args=['build', 'target.bst']) + assert result.exit_code == 0 + result = cli.run(project=project, args=['checkout', 'target.bst', checkoutdir]) + assert result.exit_code == 0 + + # Check that the checkout contains the expected files from all subprojects + assert(os.path.exists(os.path.join(checkoutdir, 'base.txt'))) + assert(os.path.exists(os.path.join(checkoutdir, 'foo.txt'))) + assert(os.path.exists(os.path.join(checkoutdir, 'bar.txt'))) + + +@pytest.mark.datafiles(DATA_DIR) +def test_nested_conflict(cli, datafiles): + foo = os.path.join(str(datafiles), 'foo') + copy_subprojects(foo, datafiles, ['base']) + + bar = os.path.join(str(datafiles), 'bar') + copy_subprojects(bar, datafiles, ['base']) + + project = os.path.join(str(datafiles), 'conflict') + copy_subprojects(project, datafiles, ['foo', 'bar']) + + result = cli.run(project=project, args=['build', 'target.bst']) + assert result.exit_code != 0 + assert result.exception + assert isinstance(result.exception, LoadError) + assert result.exception.reason == LoadErrorReason.CONFLICTING_JUNCTION + + +@pytest.mark.datafiles(DATA_DIR) +def test_invalid_missing(cli, datafiles): + project = os.path.join(str(datafiles), 'invalid') + + result = cli.run(project=project, args=['build', 'missing.bst']) + assert result.exit_code != 0 + assert result.exception + assert isinstance(result.exception, LoadError) + assert result.exception.reason == LoadErrorReason.MISSING_FILE + + +@pytest.mark.datafiles(DATA_DIR) +def test_invalid_with_deps(cli, datafiles): + project = os.path.join(str(datafiles), 'invalid') + copy_subprojects(project, datafiles, ['base']) + + result = cli.run(project=project, args=['build', 'junction-with-deps.bst']) + assert result.exit_code != 0 + assert result.exception + assert isinstance(result.exception, LoadError) + assert result.exception.reason == LoadErrorReason.INVALID_DATA + + +@pytest.mark.datafiles(DATA_DIR) +def test_invalid_junction_dep(cli, datafiles): + project = os.path.join(str(datafiles), 'invalid') + copy_subprojects(project, datafiles, ['base']) + + result = cli.run(project=project, args=['build', 'junction-dep.bst']) + assert result.exit_code != 0 + assert result.exception + assert isinstance(result.exception, LoadError) + assert result.exception.reason == LoadErrorReason.INVALID_DATA + + +@pytest.mark.datafiles(DATA_DIR) +def test_options_default(cli, tmpdir, datafiles): + project = os.path.join(str(datafiles), 'options-default') + copy_subprojects(project, datafiles, ['options-base']) + + checkoutdir = os.path.join(str(tmpdir), "checkout") + + # Build, checkout + result = cli.run(project=project, args=['build', 'target.bst']) + assert result.exit_code == 0 + result = cli.run(project=project, args=['checkout', 'target.bst', checkoutdir]) + assert result.exit_code == 0 + + assert(os.path.exists(os.path.join(checkoutdir, 'pony.txt'))) + assert(not os.path.exists(os.path.join(checkoutdir, 'horsy.txt'))) + + +@pytest.mark.datafiles(DATA_DIR) +def test_options(cli, tmpdir, datafiles): + project = os.path.join(str(datafiles), 'options') + copy_subprojects(project, datafiles, ['options-base']) + + checkoutdir = os.path.join(str(tmpdir), "checkout") + + # Build, checkout + result = cli.run(project=project, args=['build', 'target.bst']) + assert result.exit_code == 0 + result = cli.run(project=project, args=['checkout', 'target.bst', checkoutdir]) + assert result.exit_code == 0 + + assert(not os.path.exists(os.path.join(checkoutdir, 'pony.txt'))) + assert(os.path.exists(os.path.join(checkoutdir, 'horsy.txt'))) + + +@pytest.mark.datafiles(DATA_DIR) +def test_options_inherit(cli, tmpdir, datafiles): + project = os.path.join(str(datafiles), 'options-inherit') + copy_subprojects(project, datafiles, ['options-base']) + + checkoutdir = os.path.join(str(tmpdir), "checkout") + + # Build, checkout + result = cli.run(project=project, args=['build', 'target.bst']) + assert result.exit_code == 0 + result = cli.run(project=project, args=['checkout', 'target.bst', checkoutdir]) + assert result.exit_code == 0 + + assert(not os.path.exists(os.path.join(checkoutdir, 'pony.txt'))) + assert(os.path.exists(os.path.join(checkoutdir, 'horsy.txt'))) + + +@pytest.mark.skipif(HAVE_GIT is False, reason="git is not available") +@pytest.mark.datafiles(DATA_DIR) +def test_git_show(cli, tmpdir, datafiles): + project = os.path.join(str(datafiles), 'foo') + checkoutdir = os.path.join(str(tmpdir), "checkout") + + # Create the repo from 'base' subdir + repo = create_repo('git', str(tmpdir)) + ref = repo.create(os.path.join(str(datafiles), 'base')) + + # Write out junction element with git source + element = { + 'kind': 'junction', + 'sources': [ + repo.source_config(ref=ref) + ] + } + _yaml.dump(element, os.path.join(project, 'base.bst')) + + # Verify that bst show does not implicitly fetch subproject + result = cli.run(project=project, args=['show', 'target.bst']) + assert result.exit_code != 0 + assert result.exception + assert isinstance(result.exception, LoadError) + assert result.exception.reason == LoadErrorReason.MISSING_FILE + + # Explicitly fetch subproject + result = cli.run(project=project, args=['fetch', 'base.bst']) + assert result.exit_code == 0 + + # Check that bst show succeeds now and the pipeline includes the subproject element + element_list = cli.get_pipeline(project, ['target.bst']) + assert 'base.bst:target.bst' in element_list + + +@pytest.mark.skipif(HAVE_GIT is False, reason="git is not available") +@pytest.mark.datafiles(DATA_DIR) +def test_git_build(cli, tmpdir, datafiles): + project = os.path.join(str(datafiles), 'foo') + checkoutdir = os.path.join(str(tmpdir), "checkout") + + # Create the repo from 'base' subdir + repo = create_repo('git', str(tmpdir)) + ref = repo.create(os.path.join(str(datafiles), 'base')) + + # Write out junction element with git source + element = { + 'kind': 'junction', + 'sources': [ + repo.source_config(ref=ref) + ] + } + _yaml.dump(element, os.path.join(project, 'base.bst')) + + # Build (with implicit fetch of subproject), checkout + result = cli.run(project=project, args=['build', 'target.bst']) + assert result.exit_code == 0 + result = cli.run(project=project, args=['checkout', 'target.bst', checkoutdir]) + assert result.exit_code == 0 + + # Check that the checkout contains the expected files from both projects + assert(os.path.exists(os.path.join(checkoutdir, 'base.txt'))) + assert(os.path.exists(os.path.join(checkoutdir, 'foo.txt'))) diff --git a/tests/loader/junctions/bar/app.bst b/tests/loader/junctions/bar/app.bst new file mode 100644 index 000000000..a1a7a0ed9 --- /dev/null +++ b/tests/loader/junctions/bar/app.bst @@ -0,0 +1,7 @@ +kind: import +sources: +- kind: local + path: bar.txt +depends: +- junction: base.bst + filename: target.bst diff --git a/tests/loader/junctions/bar/bar.txt b/tests/loader/junctions/bar/bar.txt new file mode 100644 index 000000000..5716ca598 --- /dev/null +++ b/tests/loader/junctions/bar/bar.txt @@ -0,0 +1 @@ +bar diff --git a/tests/loader/junctions/bar/base.bst b/tests/loader/junctions/bar/base.bst new file mode 100644 index 000000000..10ce559a9 --- /dev/null +++ b/tests/loader/junctions/bar/base.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: base diff --git a/tests/loader/junctions/bar/project.conf b/tests/loader/junctions/bar/project.conf new file mode 100644 index 000000000..f8ed6621d --- /dev/null +++ b/tests/loader/junctions/bar/project.conf @@ -0,0 +1 @@ +name: bar diff --git a/tests/loader/junctions/bar/target.bst b/tests/loader/junctions/bar/target.bst new file mode 100644 index 000000000..70b78a3fc --- /dev/null +++ b/tests/loader/junctions/bar/target.bst @@ -0,0 +1,5 @@ +kind: stack +depends: +- junction: base.bst + filename: target.bst +- app.bst diff --git a/tests/loader/junctions/base/base.txt b/tests/loader/junctions/base/base.txt new file mode 100644 index 000000000..a496efee8 --- /dev/null +++ b/tests/loader/junctions/base/base.txt @@ -0,0 +1 @@ +This is a text file diff --git a/tests/loader/junctions/base/project.conf b/tests/loader/junctions/base/project.conf new file mode 100644 index 000000000..951ea1a34 --- /dev/null +++ b/tests/loader/junctions/base/project.conf @@ -0,0 +1 @@ +name: base diff --git a/tests/loader/junctions/base/target.bst b/tests/loader/junctions/base/target.bst new file mode 100644 index 000000000..2b61c518b --- /dev/null +++ b/tests/loader/junctions/base/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: base.txt diff --git a/tests/loader/junctions/conflict/bar.bst b/tests/loader/junctions/conflict/bar.bst new file mode 100644 index 000000000..62eee825a --- /dev/null +++ b/tests/loader/junctions/conflict/bar.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: bar diff --git a/tests/loader/junctions/conflict/foo.bst b/tests/loader/junctions/conflict/foo.bst new file mode 100644 index 000000000..1feb4010b --- /dev/null +++ b/tests/loader/junctions/conflict/foo.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: foo diff --git a/tests/loader/junctions/conflict/project.conf b/tests/loader/junctions/conflict/project.conf new file mode 100644 index 000000000..395bb8423 --- /dev/null +++ b/tests/loader/junctions/conflict/project.conf @@ -0,0 +1 @@ +name: conflict diff --git a/tests/loader/junctions/conflict/target.bst b/tests/loader/junctions/conflict/target.bst new file mode 100644 index 000000000..5e280e542 --- /dev/null +++ b/tests/loader/junctions/conflict/target.bst @@ -0,0 +1,6 @@ +kind: stack +depends: +- junction: foo.bst + filename: target.bst +- junction: bar.bst + filename: target.bst diff --git a/tests/loader/junctions/foo/app.bst b/tests/loader/junctions/foo/app.bst new file mode 100644 index 000000000..e658628b0 --- /dev/null +++ b/tests/loader/junctions/foo/app.bst @@ -0,0 +1,7 @@ +kind: import +sources: +- kind: local + path: foo.txt +depends: +- junction: base.bst + filename: target.bst diff --git a/tests/loader/junctions/foo/base.bst b/tests/loader/junctions/foo/base.bst new file mode 100644 index 000000000..10ce559a9 --- /dev/null +++ b/tests/loader/junctions/foo/base.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: base diff --git a/tests/loader/junctions/foo/foo.txt b/tests/loader/junctions/foo/foo.txt new file mode 100644 index 000000000..257cc5642 --- /dev/null +++ b/tests/loader/junctions/foo/foo.txt @@ -0,0 +1 @@ +foo diff --git a/tests/loader/junctions/foo/project.conf b/tests/loader/junctions/foo/project.conf new file mode 100644 index 000000000..5a240e3ed --- /dev/null +++ b/tests/loader/junctions/foo/project.conf @@ -0,0 +1 @@ +name: foo diff --git a/tests/loader/junctions/foo/target.bst b/tests/loader/junctions/foo/target.bst new file mode 100644 index 000000000..70b78a3fc --- /dev/null +++ b/tests/loader/junctions/foo/target.bst @@ -0,0 +1,5 @@ +kind: stack +depends: +- junction: base.bst + filename: target.bst +- app.bst diff --git a/tests/loader/junctions/invalid/app.bst b/tests/loader/junctions/invalid/app.bst new file mode 100644 index 000000000..9906149a6 --- /dev/null +++ b/tests/loader/junctions/invalid/app.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: foo.txt diff --git a/tests/loader/junctions/invalid/base-with-deps.bst b/tests/loader/junctions/invalid/base-with-deps.bst new file mode 100644 index 000000000..a30eb3a52 --- /dev/null +++ b/tests/loader/junctions/invalid/base-with-deps.bst @@ -0,0 +1,6 @@ +kind: junction +sources: +- kind: local + path: base +depends: +- app.bst diff --git a/tests/loader/junctions/invalid/base.bst b/tests/loader/junctions/invalid/base.bst new file mode 100644 index 000000000..10ce559a9 --- /dev/null +++ b/tests/loader/junctions/invalid/base.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: base diff --git a/tests/loader/junctions/invalid/foo.txt b/tests/loader/junctions/invalid/foo.txt new file mode 100644 index 000000000..257cc5642 --- /dev/null +++ b/tests/loader/junctions/invalid/foo.txt @@ -0,0 +1 @@ +foo diff --git a/tests/loader/junctions/invalid/junction-dep.bst b/tests/loader/junctions/invalid/junction-dep.bst new file mode 100644 index 000000000..20fd30011 --- /dev/null +++ b/tests/loader/junctions/invalid/junction-dep.bst @@ -0,0 +1,3 @@ +kind: stack +depends: +- base.bst diff --git a/tests/loader/junctions/invalid/junction-with-deps.bst b/tests/loader/junctions/invalid/junction-with-deps.bst new file mode 100644 index 000000000..d2ca337dd --- /dev/null +++ b/tests/loader/junctions/invalid/junction-with-deps.bst @@ -0,0 +1,4 @@ +kind: stack +depends: +- junction: base-with-deps.bst + filename: target.bst diff --git a/tests/loader/junctions/invalid/missing.bst b/tests/loader/junctions/invalid/missing.bst new file mode 100644 index 000000000..672e967fe --- /dev/null +++ b/tests/loader/junctions/invalid/missing.bst @@ -0,0 +1,4 @@ +kind: stack +depends: +- junction: missingfile.bst + filename: target.bst diff --git a/tests/loader/junctions/invalid/project.conf b/tests/loader/junctions/invalid/project.conf new file mode 100644 index 000000000..38070bf71 --- /dev/null +++ b/tests/loader/junctions/invalid/project.conf @@ -0,0 +1 @@ +name: invalid diff --git a/tests/loader/junctions/nested/foo.bst b/tests/loader/junctions/nested/foo.bst new file mode 100644 index 000000000..1feb4010b --- /dev/null +++ b/tests/loader/junctions/nested/foo.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: foo diff --git a/tests/loader/junctions/nested/project.conf b/tests/loader/junctions/nested/project.conf new file mode 100644 index 000000000..551f51c6a --- /dev/null +++ b/tests/loader/junctions/nested/project.conf @@ -0,0 +1 @@ +name: nested diff --git a/tests/loader/junctions/nested/target.bst b/tests/loader/junctions/nested/target.bst new file mode 100644 index 000000000..db59499a7 --- /dev/null +++ b/tests/loader/junctions/nested/target.bst @@ -0,0 +1,4 @@ +kind: stack +depends: +- junction: foo.bst + filename: target.bst diff --git a/tests/loader/junctions/options-base/horsy.txt b/tests/loader/junctions/options-base/horsy.txt new file mode 100644 index 000000000..063dad656 --- /dev/null +++ b/tests/loader/junctions/options-base/horsy.txt @@ -0,0 +1 @@ +horsy diff --git a/tests/loader/junctions/options-base/pony.txt b/tests/loader/junctions/options-base/pony.txt new file mode 100644 index 000000000..f62144808 --- /dev/null +++ b/tests/loader/junctions/options-base/pony.txt @@ -0,0 +1 @@ +pony diff --git a/tests/loader/junctions/options-base/project.conf b/tests/loader/junctions/options-base/project.conf new file mode 100644 index 000000000..a98ebd5ed --- /dev/null +++ b/tests/loader/junctions/options-base/project.conf @@ -0,0 +1,9 @@ +name: options-base +options: + animal: + type: enum + description: The kind of animal + values: + - pony + - horsy + default: pony diff --git a/tests/loader/junctions/options-base/target.bst b/tests/loader/junctions/options-base/target.bst new file mode 100644 index 000000000..cda17af98 --- /dev/null +++ b/tests/loader/junctions/options-base/target.bst @@ -0,0 +1,8 @@ +kind: import +sources: +- kind: local + (?): + - animal == "pony": + path: pony.txt + - animal == "horsy": + path: horsy.txt diff --git a/tests/loader/junctions/options-default/base.bst b/tests/loader/junctions/options-default/base.bst new file mode 100644 index 000000000..5d42e5c31 --- /dev/null +++ b/tests/loader/junctions/options-default/base.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: options-base diff --git a/tests/loader/junctions/options-default/project.conf b/tests/loader/junctions/options-default/project.conf new file mode 100644 index 000000000..b9e58a582 --- /dev/null +++ b/tests/loader/junctions/options-default/project.conf @@ -0,0 +1 @@ +name: options-default diff --git a/tests/loader/junctions/options-default/target.bst b/tests/loader/junctions/options-default/target.bst new file mode 100644 index 000000000..8395c0c77 --- /dev/null +++ b/tests/loader/junctions/options-default/target.bst @@ -0,0 +1,4 @@ +kind: stack +depends: +- junction: base.bst + filename: target.bst diff --git a/tests/loader/junctions/options-inherit/base.bst b/tests/loader/junctions/options-inherit/base.bst new file mode 100644 index 000000000..8623d0d01 --- /dev/null +++ b/tests/loader/junctions/options-inherit/base.bst @@ -0,0 +1,7 @@ +kind: junction +sources: +- kind: local + path: options-base +config: + options: + animal: '%{animal}' diff --git a/tests/loader/junctions/options-inherit/project.conf b/tests/loader/junctions/options-inherit/project.conf new file mode 100644 index 000000000..1e0ea4464 --- /dev/null +++ b/tests/loader/junctions/options-inherit/project.conf @@ -0,0 +1,10 @@ +name: options-inherit +options: + animal: + type: enum + description: The kind of animal + values: + - pony + - horsy + default: horsy + variable: animal diff --git a/tests/loader/junctions/options-inherit/target.bst b/tests/loader/junctions/options-inherit/target.bst new file mode 100644 index 000000000..8395c0c77 --- /dev/null +++ b/tests/loader/junctions/options-inherit/target.bst @@ -0,0 +1,4 @@ +kind: stack +depends: +- junction: base.bst + filename: target.bst diff --git a/tests/loader/junctions/options/base.bst b/tests/loader/junctions/options/base.bst new file mode 100644 index 000000000..a100e5e1e --- /dev/null +++ b/tests/loader/junctions/options/base.bst @@ -0,0 +1,7 @@ +kind: junction +sources: +- kind: local + path: options-base +config: + options: + animal: horsy diff --git a/tests/loader/junctions/options/project.conf b/tests/loader/junctions/options/project.conf new file mode 100644 index 000000000..de53ae176 --- /dev/null +++ b/tests/loader/junctions/options/project.conf @@ -0,0 +1 @@ +name: options diff --git a/tests/loader/junctions/options/target.bst b/tests/loader/junctions/options/target.bst new file mode 100644 index 000000000..8395c0c77 --- /dev/null +++ b/tests/loader/junctions/options/target.bst @@ -0,0 +1,4 @@ +kind: stack +depends: +- junction: base.bst + filename: target.bst diff --git a/tests/loader/junctions/toplevel/bar.bst b/tests/loader/junctions/toplevel/bar.bst new file mode 100644 index 000000000..62eee825a --- /dev/null +++ b/tests/loader/junctions/toplevel/bar.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: bar diff --git a/tests/loader/junctions/toplevel/base.bst b/tests/loader/junctions/toplevel/base.bst new file mode 100644 index 000000000..10ce559a9 --- /dev/null +++ b/tests/loader/junctions/toplevel/base.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: base diff --git a/tests/loader/junctions/toplevel/foo.bst b/tests/loader/junctions/toplevel/foo.bst new file mode 100644 index 000000000..1feb4010b --- /dev/null +++ b/tests/loader/junctions/toplevel/foo.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: foo diff --git a/tests/loader/junctions/toplevel/project.conf b/tests/loader/junctions/toplevel/project.conf new file mode 100644 index 000000000..496c82128 --- /dev/null +++ b/tests/loader/junctions/toplevel/project.conf @@ -0,0 +1 @@ +name: toplevel diff --git a/tests/loader/junctions/toplevel/target.bst b/tests/loader/junctions/toplevel/target.bst new file mode 100644 index 000000000..5e280e542 --- /dev/null +++ b/tests/loader/junctions/toplevel/target.bst @@ -0,0 +1,6 @@ +kind: stack +depends: +- junction: foo.bst + filename: target.bst +- junction: bar.bst + filename: target.bst |