From 364ea9dd96f953e96f954669958e60741380e0ff Mon Sep 17 00:00:00 2001 From: Tristan van Berkom Date: Mon, 8 Jun 2020 19:08:04 +0900 Subject: tests/format/junctions.py: Adding tests for the overrides feature * Test various scenarios of overriding junctions, including deep paths as junctions to override, and as junctions to use to override. * Test conflicting junction configurations, ensuring that we report both provenances of where the junctions were declared. * Test circular references in element paths while declaring overrides, for instance when trying to override a subproject using a deeper definition of the same subproject. --- tests/format/junctions.py | 171 ++++++++++++++++++++- .../circular-references/link-subsubsubproject.bst | 4 + .../junctions/circular-references/project.conf | 2 + ...ject-overriden-with-circular-reference-link.bst | 8 + ...ubproject-overriden-with-circular-reference.bst | 8 + .../junctions/circular-references/subproject.bst | 4 + .../circular-references/subproject/project.conf | 2 + .../circular-references/subproject/sub.txt | 1 + .../subproject/subsubproject.bst | 4 + .../subproject/subsubproject/project.conf | 2 + .../subproject/subsubproject/subsub.txt | 1 + .../subproject/subsubproject/subsubsubproject.bst | 4 + .../subsubproject/subsubsubproject/project.conf | 2 + .../subsubproject/subsubsubproject/subsubsub.txt | 1 + .../subsubproject/subsubsubproject/target.bst | 4 + .../subproject/subsubproject/target.bst | 4 + .../circular-references/subproject/target.bst | 4 + ...rget-overridden-subsubproject-circular-link.bst | 4 + .../target-overridden-subsubproject-circular.bst | 4 + .../conflicts/include-conflict-target.bst | 5 + .../junctions/conflicts/include-conflict.bst | 7 + .../conflicts/nested-conflict-toplevel.bst | 4 + .../junctions/conflicts/override-conflict.bst | 8 + .../format/junctions/conflicts/plugin-conflict.bst | 4 + tests/format/junctions/conflicts/project.conf | 2 + .../format/junctions/conflicts/simple-conflict.bst | 5 + .../subproject-override-conflicting-path.bst | 13 ++ tests/format/junctions/conflicts/subproject.bst | 4 + .../junctions/conflicts/subproject/project.conf | 2 + .../format/junctions/conflicts/subproject/sub.txt | 1 + .../subproject/subsubproject-conflict-target.bst | 4 + .../subproject/subsubproject-conflict.bst | 4 + .../subsubproject-conflict/deepsurprise.txt | 1 + .../subproject/subsubproject-conflict/project.conf | 2 + .../subproject/subsubproject-conflict/target.bst | 4 + .../conflicts/subproject/subsubproject.bst | 4 + .../subproject/subsubproject/project.conf | 2 + .../conflicts/subproject/subsubproject/subsub.txt | 1 + .../subproject/subsubproject/subsubsubproject.bst | 4 + .../subsubproject/subsubsubproject/project.conf | 2 + .../subsubproject/subsubsubproject/subsubsub.txt | 1 + .../subsubproject/subsubsubproject/target.bst | 4 + .../conflicts/subproject/subsubproject/target.bst | 4 + .../junctions/conflicts/subproject/target.bst | 4 + tests/format/junctions/conflicts/subproject2.bst | 4 + .../junctions/conflicts/subproject2/inc.yaml | 1 + .../conflicts/subproject2/plugins/found.py | 19 +++ .../junctions/conflicts/subproject2/project.conf | 8 + .../junctions/conflicts/subproject2/sub2.txt | 1 + .../junctions/conflicts/subproject2/target.bst | 4 + .../junctions/invalid/subproject-self-override.bst | 16 ++ .../junctions/invalid/target-self-override.bst | 4 + tests/format/junctions/override-twice/override.bst | 4 + .../override-twice/override/overridden-again.txt | 1 + .../junctions/override-twice/override/project.conf | 2 + .../junctions/override-twice/override/target.bst | 4 + tests/format/junctions/override-twice/project.conf | 2 + .../format/junctions/override-twice/subproject.bst | 8 + .../override-twice/subproject/override.bst | 4 + .../subproject/override/overridden.txt | 1 + .../subproject/override/project.conf | 2 + .../override-twice/subproject/override/target.bst | 4 + .../override-twice/subproject/project.conf | 2 + .../override-twice/subproject/subsubproject.bst | 8 + .../subproject/subsubproject/project.conf | 2 + .../subproject/subsubproject/subsubsubproject.bst | 4 + .../subsubproject/subsubsubproject/original.txt | 1 + .../subsubproject/subsubsubproject/project.conf | 2 + .../subsubproject/subsubsubproject/target.bst | 4 + tests/format/junctions/override-twice/target.bst | 4 + .../overrides/overridden-subsubproject.bst | 10 ++ .../overrides/overridden-subsubsubproject.bst | 10 ++ tests/format/junctions/overrides/project.conf | 2 + .../subproject-overriden-with-deep-subproject.bst | 8 + .../overrides/subproject-with-deep-override.bst | 8 + .../overrides/subproject-with-override.bst | 8 + tests/format/junctions/overrides/subproject.bst | 4 + .../junctions/overrides/subproject/project.conf | 2 + .../format/junctions/overrides/subproject/sub.txt | 1 + .../overrides/subproject/subsubproject.bst | 4 + .../subproject/subsubproject/project.conf | 2 + .../overrides/subproject/subsubproject/subsub.txt | 1 + .../subproject/subsubproject/subsubsubproject.bst | 4 + .../subsubproject/subsubsubproject/project.conf | 2 + .../subsubproject/subsubsubproject/subsubsub.txt | 1 + .../subsubproject/subsubsubproject/target.bst | 4 + .../overrides/subproject/subsubproject/target.bst | 4 + .../junctions/overrides/subproject/target.bst | 4 + .../format/junctions/overrides/surpriseproject.bst | 4 + .../surpriseproject/deepsurpriseproject.bst | 4 + .../deepsurpriseproject/deepsurprise.txt | 1 + .../deepsurpriseproject/project.conf | 2 + .../surpriseproject/deepsurpriseproject/target.bst | 4 + .../overrides/surpriseproject/project.conf | 2 + .../overrides/surpriseproject/surprise.txt | 1 + .../junctions/overrides/surpriseproject/target.bst | 4 + .../overrides/target-overridden-subsubproject.bst | 12 ++ .../target-overridden-subsubsubproject.bst | 8 + .../target-overridden-with-deepsubproject.bst | 4 + 99 files changed, 565 insertions(+), 6 deletions(-) create mode 100644 tests/format/junctions/circular-references/link-subsubsubproject.bst create mode 100644 tests/format/junctions/circular-references/project.conf create mode 100644 tests/format/junctions/circular-references/subproject-overriden-with-circular-reference-link.bst create mode 100644 tests/format/junctions/circular-references/subproject-overriden-with-circular-reference.bst create mode 100644 tests/format/junctions/circular-references/subproject.bst create mode 100644 tests/format/junctions/circular-references/subproject/project.conf create mode 100644 tests/format/junctions/circular-references/subproject/sub.txt create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject.bst create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject/project.conf create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject/subsub.txt create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject.bst create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/project.conf create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/subsubsub.txt create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/target.bst create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject/target.bst create mode 100644 tests/format/junctions/circular-references/subproject/target.bst create mode 100644 tests/format/junctions/circular-references/target-overridden-subsubproject-circular-link.bst create mode 100644 tests/format/junctions/circular-references/target-overridden-subsubproject-circular.bst create mode 100644 tests/format/junctions/conflicts/include-conflict-target.bst create mode 100644 tests/format/junctions/conflicts/include-conflict.bst create mode 100644 tests/format/junctions/conflicts/nested-conflict-toplevel.bst create mode 100644 tests/format/junctions/conflicts/override-conflict.bst create mode 100644 tests/format/junctions/conflicts/plugin-conflict.bst create mode 100644 tests/format/junctions/conflicts/project.conf create mode 100644 tests/format/junctions/conflicts/simple-conflict.bst create mode 100644 tests/format/junctions/conflicts/subproject-override-conflicting-path.bst create mode 100644 tests/format/junctions/conflicts/subproject.bst create mode 100644 tests/format/junctions/conflicts/subproject/project.conf create mode 100644 tests/format/junctions/conflicts/subproject/sub.txt create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject-conflict-target.bst create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject-conflict.bst create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject-conflict/deepsurprise.txt create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject-conflict/project.conf create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject-conflict/target.bst create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject.bst create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject/project.conf create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject/subsub.txt create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject.bst create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/project.conf create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/subsubsub.txt create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/target.bst create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject/target.bst create mode 100644 tests/format/junctions/conflicts/subproject/target.bst create mode 100644 tests/format/junctions/conflicts/subproject2.bst create mode 100644 tests/format/junctions/conflicts/subproject2/inc.yaml create mode 100644 tests/format/junctions/conflicts/subproject2/plugins/found.py create mode 100644 tests/format/junctions/conflicts/subproject2/project.conf create mode 100644 tests/format/junctions/conflicts/subproject2/sub2.txt create mode 100644 tests/format/junctions/conflicts/subproject2/target.bst create mode 100644 tests/format/junctions/invalid/subproject-self-override.bst create mode 100644 tests/format/junctions/invalid/target-self-override.bst create mode 100644 tests/format/junctions/override-twice/override.bst create mode 100644 tests/format/junctions/override-twice/override/overridden-again.txt create mode 100644 tests/format/junctions/override-twice/override/project.conf create mode 100644 tests/format/junctions/override-twice/override/target.bst create mode 100644 tests/format/junctions/override-twice/project.conf create mode 100644 tests/format/junctions/override-twice/subproject.bst create mode 100644 tests/format/junctions/override-twice/subproject/override.bst create mode 100644 tests/format/junctions/override-twice/subproject/override/overridden.txt create mode 100644 tests/format/junctions/override-twice/subproject/override/project.conf create mode 100644 tests/format/junctions/override-twice/subproject/override/target.bst create mode 100644 tests/format/junctions/override-twice/subproject/project.conf create mode 100644 tests/format/junctions/override-twice/subproject/subsubproject.bst create mode 100644 tests/format/junctions/override-twice/subproject/subsubproject/project.conf create mode 100644 tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject.bst create mode 100644 tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/original.txt create mode 100644 tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/project.conf create mode 100644 tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/target.bst create mode 100644 tests/format/junctions/override-twice/target.bst create mode 100644 tests/format/junctions/overrides/overridden-subsubproject.bst create mode 100644 tests/format/junctions/overrides/overridden-subsubsubproject.bst create mode 100644 tests/format/junctions/overrides/project.conf create mode 100644 tests/format/junctions/overrides/subproject-overriden-with-deep-subproject.bst create mode 100644 tests/format/junctions/overrides/subproject-with-deep-override.bst create mode 100644 tests/format/junctions/overrides/subproject-with-override.bst create mode 100644 tests/format/junctions/overrides/subproject.bst create mode 100644 tests/format/junctions/overrides/subproject/project.conf create mode 100644 tests/format/junctions/overrides/subproject/sub.txt create mode 100644 tests/format/junctions/overrides/subproject/subsubproject.bst create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/project.conf create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/subsub.txt create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject.bst create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/project.conf create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/subsubsub.txt create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/target.bst create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/target.bst create mode 100644 tests/format/junctions/overrides/subproject/target.bst create mode 100644 tests/format/junctions/overrides/surpriseproject.bst create mode 100644 tests/format/junctions/overrides/surpriseproject/deepsurpriseproject.bst create mode 100644 tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/deepsurprise.txt create mode 100644 tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/project.conf create mode 100644 tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/target.bst create mode 100644 tests/format/junctions/overrides/surpriseproject/project.conf create mode 100644 tests/format/junctions/overrides/surpriseproject/surprise.txt create mode 100644 tests/format/junctions/overrides/surpriseproject/target.bst create mode 100644 tests/format/junctions/overrides/target-overridden-subsubproject.bst create mode 100644 tests/format/junctions/overrides/target-overridden-subsubsubproject.bst create mode 100644 tests/format/junctions/overrides/target-overridden-with-deepsubproject.bst diff --git a/tests/format/junctions.py b/tests/format/junctions.py index 0cdbc6183..cf1ae4c26 100644 --- a/tests/format/junctions.py +++ b/tests/format/junctions.py @@ -141,25 +141,39 @@ def test_missing_files(cli, datafiles, target, provenance): # @pytest.mark.datafiles(DATA_DIR) @pytest.mark.parametrize( - "target,reason,provenance", + "target,domain,reason,provenance", [ # Test a junction which itself has dependencies - ("junction-with-deps.bst", LoadErrorReason.INVALID_JUNCTION, "base-with-deps.bst [line 6 column 2]"), + ( + "junction-with-deps.bst", + ErrorDomain.LOAD, + LoadErrorReason.INVALID_JUNCTION, + "base-with-deps.bst [line 6 column 2]", + ), # Test having a dependency directly on a junction - ("junction-dep.bst", LoadErrorReason.INVALID_DATA, "junction-dep.bst [line 3 column 2]"), + ("junction-dep.bst", ErrorDomain.LOAD, LoadErrorReason.INVALID_DATA, "junction-dep.bst [line 3 column 2]"), # Test that we error correctly when we junction-depend on a non-junction ( "junctiondep-not-a-junction.bst", + ErrorDomain.LOAD, LoadErrorReason.INVALID_DATA, "junctiondep-not-a-junction.bst [line 3 column 2]", ), + # Test that overriding a subproject junction with the junction + # declaring the override itself will result in an error + ( + "target-self-override.bst", + ErrorDomain.ELEMENT, + "override-junction-with-self", + "subproject-self-override.bst [line 16 column 20]", + ), ], - ids=["junction-with-deps", "deps-on-junction", "use-element-as-junction"], + ids=["junction-with-deps", "deps-on-junction", "use-element-as-junction", "override-with-self"], ) -def test_invalid(cli, datafiles, target, reason, provenance): +def test_invalid(cli, datafiles, target, domain, reason, provenance): project = os.path.join(str(datafiles), "invalid") result = cli.run(project=project, args=["build", target]) - result.assert_main_error(ErrorDomain.LOAD, reason) + result.assert_main_error(domain, reason) assert provenance in result.stderr @@ -371,3 +385,148 @@ def test_full_path_not_found(cli, tmpdir, datafiles, target, provenance): # Check that provenance was provided if expected if provenance: assert provenance in result.stderr + + +# +# Test the overrides feature. +# +# Here we reuse the `nested` project since it already has deep +# nesting, and add to it a couple of additional junctions to +# test overriding of junctions at various depts +# +@pytest.mark.datafiles(DATA_DIR) +@pytest.mark.parametrize( + "target,expected", + [ + # Test that we can override a subproject junction of a subproject + ("target-overridden-subsubproject.bst", "subsubsub.txt"), + # Test that we can override a subproject junction of a subproject's subproject + ("target-overridden-subsubsubproject.bst", "surprise.txt"), + # Test that we can override a subproject junction with a deep subproject path + ("target-overridden-with-deepsubproject.bst", "deepsurprise.txt"), + ], + ids=["override-subproject", "override-subsubproject", "override-subproject-with-subsubproject"], +) +def test_overrides(cli, tmpdir, datafiles, target, expected): + project = os.path.join(str(datafiles), "overrides") + checkoutdir = os.path.join(str(tmpdir), "checkout") + + # Build, checkout + result = cli.run(project=project, args=["build", target]) + result.assert_success() + result = cli.run(project=project, args=["artifact", "checkout", target, "--directory", checkoutdir]) + result.assert_success() + + # Check that the checkout contains the expected file + assert os.path.exists(os.path.join(checkoutdir, expected)) + + +# Tests a situation where the same deep subproject is overridden +# more than once. +# +@pytest.mark.datafiles(DATA_DIR) +def test_override_twice(cli, tmpdir, datafiles): + project = os.path.join(str(datafiles), "override-twice") + checkoutdir = os.path.join(str(tmpdir), "checkout") + + # Build, checkout + result = cli.run(project=project, args=["build", "target.bst"]) + result.assert_success() + result = cli.run(project=project, args=["artifact", "checkout", "target.bst", "--directory", checkoutdir]) + result.assert_success() + + # Check that the checkout contains the expected file + assert os.path.exists(os.path.join(checkoutdir, "overridden-again.txt")) + + +# +# Test conflicting junction scenarios +# +# Note here we assert 2 provenances, we want to ensure that both +# provenances leading up to the use of a project are accounted for +# in a conflicting junction error. +# +# The second provenance can be None, because there will be no +# provenance for the originally loaded project if it was the toplevel +# project, or in some cases when a full path to a deep element was +# specified directly on the command line. +# +@pytest.mark.datafiles(DATA_DIR) +@pytest.mark.parametrize( + "target,provenances", + [ + # Test a stack element which depends directly on the same project twice + ("simple-conflict.bst", ["simple-conflict.bst [line 5 column 2]", "simple-conflict.bst [line 4 column 2]"]), + # Test a dependency chain leading deep into a project which conflicts with the toplevel + ("nested-conflict-toplevel.bst", ["subproject.bst:subsubproject-conflict-target.bst [line 4 column 2]"]), + # Test an attempt to override a subproject with a subproject of that same subproject through a different junction + ( + "override-conflict.bst", + [ + "subproject-override-conflicting-path.bst [line 13 column 23]", + "override-conflict.bst [line 8 column 2]", + ], + ), + # Same test as above, but specifying the target as a full path instead of a stack element + ( + "subproject-override-conflicting-path.bst:subsubproject.bst:target.bst", + ["subproject-override-conflicting-path.bst [line 13 column 23]"], + ), + # Test a dependency on a subproject conflicting with an include of a file from a different + # version of the same project + ( + "include-conflict-target.bst", + ["include-conflict-target.bst [line 5 column 2]", "include-conflict.bst [line 4 column 7]"], + ), + # Test an element kind which needs to load it's plugin from a subproject, but + # the element has a dependency on an element from a different version of the same project + ("plugin-conflict.bst", ["project.conf [line 4 column 2]", "plugin-conflict.bst [line 4 column 2]"]), + ], + ids=["simple", "nested", "override", "override-full-path", "include", "plugin"], +) +def test_conflict(cli, tmpdir, datafiles, target, provenances): + project = os.path.join(str(datafiles), "conflicts") + + # Special case setup the conflicting project.conf + if target == "plugin-conflict.bst": + update_project( + project, {"plugins": [{"origin": "junction", "junction": "subproject2.bst", "elements": ["found"],}]}, + ) + + result = cli.run(project=project, args=["build", target]) + result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.CONFLICTING_JUNCTION) + + # Assert expected provenances + for provenance in provenances: + assert provenance in result.stderr + + +# +# Test circular references in junction override cycles +# +@pytest.mark.datafiles(DATA_DIR) +@pytest.mark.parametrize( + "target,provenance1,provenance2", + [ + # Override a subprojects subsubproject, with a subproject of the + # subsubproject being overridden. + ( + "target-overridden-subsubproject-circular.bst", + "subproject-overriden-with-circular-reference.bst [line 8 column 23]", + None, + ), + ( + "target-overridden-subsubproject-circular-link.bst", + "link-subsubsubproject.bst [line 4 column 10]", + "target-overridden-subsubproject-circular-link.bst [line 4 column 2]", + ), + ], + ids=["override-self", "override-self-using-link"], +) +def test_circular_reference(cli, tmpdir, datafiles, target, provenance1, provenance2): + project = os.path.join(str(datafiles), "circular-references") + result = cli.run(project=project, args=["build", target]) + result.assert_main_error(ErrorDomain.LOAD, LoadErrorReason.CIRCULAR_REFERENCE) + assert provenance1 in result.stderr + if provenance2: + assert provenance2 in result.stderr diff --git a/tests/format/junctions/circular-references/link-subsubsubproject.bst b/tests/format/junctions/circular-references/link-subsubsubproject.bst new file mode 100644 index 000000000..b10db7740 --- /dev/null +++ b/tests/format/junctions/circular-references/link-subsubsubproject.bst @@ -0,0 +1,4 @@ +kind: link + +config: + target: subproject-overriden-with-circular-reference-link.bst:subsubproject.bst:subsubsubproject.bst diff --git a/tests/format/junctions/circular-references/project.conf b/tests/format/junctions/circular-references/project.conf new file mode 100644 index 000000000..20636c446 --- /dev/null +++ b/tests/format/junctions/circular-references/project.conf @@ -0,0 +1,2 @@ +name: test +min-version: 2.0 diff --git a/tests/format/junctions/circular-references/subproject-overriden-with-circular-reference-link.bst b/tests/format/junctions/circular-references/subproject-overriden-with-circular-reference-link.bst new file mode 100644 index 000000000..9d8b34111 --- /dev/null +++ b/tests/format/junctions/circular-references/subproject-overriden-with-circular-reference-link.bst @@ -0,0 +1,8 @@ +kind: junction +sources: +- kind: local + path: subproject + +config: + overrides: + subsubproject.bst: link-subsubsubproject.bst diff --git a/tests/format/junctions/circular-references/subproject-overriden-with-circular-reference.bst b/tests/format/junctions/circular-references/subproject-overriden-with-circular-reference.bst new file mode 100644 index 000000000..1cdbc44a6 --- /dev/null +++ b/tests/format/junctions/circular-references/subproject-overriden-with-circular-reference.bst @@ -0,0 +1,8 @@ +kind: junction +sources: +- kind: local + path: subproject + +config: + overrides: + subsubproject.bst: subproject-overriden-with-circular-reference.bst:subsubproject.bst:subsubsubproject.bst diff --git a/tests/format/junctions/circular-references/subproject.bst b/tests/format/junctions/circular-references/subproject.bst new file mode 100644 index 000000000..c88189cb0 --- /dev/null +++ b/tests/format/junctions/circular-references/subproject.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: subproject diff --git a/tests/format/junctions/circular-references/subproject/project.conf b/tests/format/junctions/circular-references/subproject/project.conf new file mode 100644 index 000000000..39a53e2ab --- /dev/null +++ b/tests/format/junctions/circular-references/subproject/project.conf @@ -0,0 +1,2 @@ +name: subtest +min-version: 2.0 diff --git a/tests/format/junctions/circular-references/subproject/sub.txt b/tests/format/junctions/circular-references/subproject/sub.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/circular-references/subproject/sub.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/circular-references/subproject/subsubproject.bst b/tests/format/junctions/circular-references/subproject/subsubproject.bst new file mode 100644 index 000000000..f535ab0e0 --- /dev/null +++ b/tests/format/junctions/circular-references/subproject/subsubproject.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: subsubproject diff --git a/tests/format/junctions/circular-references/subproject/subsubproject/project.conf b/tests/format/junctions/circular-references/subproject/subsubproject/project.conf new file mode 100644 index 000000000..d11bcbb30 --- /dev/null +++ b/tests/format/junctions/circular-references/subproject/subsubproject/project.conf @@ -0,0 +1,2 @@ +name: subsubtest +min-version: 2.0 diff --git a/tests/format/junctions/circular-references/subproject/subsubproject/subsub.txt b/tests/format/junctions/circular-references/subproject/subsubproject/subsub.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/circular-references/subproject/subsubproject/subsub.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject.bst b/tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject.bst new file mode 100644 index 000000000..bce64597b --- /dev/null +++ b/tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: subsubsubproject diff --git a/tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/project.conf b/tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/project.conf new file mode 100644 index 000000000..e508da808 --- /dev/null +++ b/tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/project.conf @@ -0,0 +1,2 @@ +name: subsubsubtest +min-version: 2.0 diff --git a/tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/subsubsub.txt b/tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/subsubsub.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/subsubsub.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/target.bst b/tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/target.bst new file mode 100644 index 000000000..351c9a22d --- /dev/null +++ b/tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: subsubsub.txt diff --git a/tests/format/junctions/circular-references/subproject/subsubproject/target.bst b/tests/format/junctions/circular-references/subproject/subsubproject/target.bst new file mode 100644 index 000000000..afafac601 --- /dev/null +++ b/tests/format/junctions/circular-references/subproject/subsubproject/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: subsub.txt diff --git a/tests/format/junctions/circular-references/subproject/target.bst b/tests/format/junctions/circular-references/subproject/target.bst new file mode 100644 index 000000000..e24d9bbb4 --- /dev/null +++ b/tests/format/junctions/circular-references/subproject/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: sub.txt diff --git a/tests/format/junctions/circular-references/target-overridden-subsubproject-circular-link.bst b/tests/format/junctions/circular-references/target-overridden-subsubproject-circular-link.bst new file mode 100644 index 000000000..32617f620 --- /dev/null +++ b/tests/format/junctions/circular-references/target-overridden-subsubproject-circular-link.bst @@ -0,0 +1,4 @@ +kind: stack + +depends: +- subproject-overriden-with-circular-reference-link.bst:subsubproject.bst:target.bst diff --git a/tests/format/junctions/circular-references/target-overridden-subsubproject-circular.bst b/tests/format/junctions/circular-references/target-overridden-subsubproject-circular.bst new file mode 100644 index 000000000..fd4b5a5f7 --- /dev/null +++ b/tests/format/junctions/circular-references/target-overridden-subsubproject-circular.bst @@ -0,0 +1,4 @@ +kind: stack + +depends: +- subproject-overriden-with-circular-reference.bst:subsubproject.bst:target.bst diff --git a/tests/format/junctions/conflicts/include-conflict-target.bst b/tests/format/junctions/conflicts/include-conflict-target.bst new file mode 100644 index 000000000..237989cd7 --- /dev/null +++ b/tests/format/junctions/conflicts/include-conflict-target.bst @@ -0,0 +1,5 @@ +kind: stack + +depends: +- include-conflict.bst +- subproject.bst:target.bst diff --git a/tests/format/junctions/conflicts/include-conflict.bst b/tests/format/junctions/conflicts/include-conflict.bst new file mode 100644 index 000000000..9c1ecab25 --- /dev/null +++ b/tests/format/junctions/conflicts/include-conflict.bst @@ -0,0 +1,7 @@ +kind: manual + +variables: + (@): subproject2.bst:inc.yaml + +depends: +- subproject2.bst:target.bst diff --git a/tests/format/junctions/conflicts/nested-conflict-toplevel.bst b/tests/format/junctions/conflicts/nested-conflict-toplevel.bst new file mode 100644 index 000000000..445ac0799 --- /dev/null +++ b/tests/format/junctions/conflicts/nested-conflict-toplevel.bst @@ -0,0 +1,4 @@ +kind: stack + +depends: +- subproject.bst:subsubproject-conflict-target.bst diff --git a/tests/format/junctions/conflicts/override-conflict.bst b/tests/format/junctions/conflicts/override-conflict.bst new file mode 100644 index 000000000..3f0728d29 --- /dev/null +++ b/tests/format/junctions/conflicts/override-conflict.bst @@ -0,0 +1,8 @@ +kind: stack + +# +# To trigger the conflict, we need to traverse the path of +# the overridden `subsubproject.bst` junction. +# +depends: +- subproject-override-conflicting-path.bst:subsubproject.bst:target.bst diff --git a/tests/format/junctions/conflicts/plugin-conflict.bst b/tests/format/junctions/conflicts/plugin-conflict.bst new file mode 100644 index 000000000..b9061d14b --- /dev/null +++ b/tests/format/junctions/conflicts/plugin-conflict.bst @@ -0,0 +1,4 @@ +kind: found + +depends: +- subproject.bst:target.bst diff --git a/tests/format/junctions/conflicts/project.conf b/tests/format/junctions/conflicts/project.conf new file mode 100644 index 000000000..20636c446 --- /dev/null +++ b/tests/format/junctions/conflicts/project.conf @@ -0,0 +1,2 @@ +name: test +min-version: 2.0 diff --git a/tests/format/junctions/conflicts/simple-conflict.bst b/tests/format/junctions/conflicts/simple-conflict.bst new file mode 100644 index 000000000..5aaf3a8ab --- /dev/null +++ b/tests/format/junctions/conflicts/simple-conflict.bst @@ -0,0 +1,5 @@ +kind: stack + +depends: +- subproject.bst:target.bst +- subproject2.bst:target.bst diff --git a/tests/format/junctions/conflicts/subproject-override-conflicting-path.bst b/tests/format/junctions/conflicts/subproject-override-conflicting-path.bst new file mode 100644 index 000000000..3861d97df --- /dev/null +++ b/tests/format/junctions/conflicts/subproject-override-conflicting-path.bst @@ -0,0 +1,13 @@ +kind: junction +sources: +- kind: local + path: subproject + +# +# Here we are declaring a junction to subproject, and trying to override +# it's subproject with a deep subproject, using a different junction to +# the same subproject `subproject.bst` +# +config: + overrides: + subsubproject.bst: subproject.bst:subsubproject.bst:subsubsubproject.bst diff --git a/tests/format/junctions/conflicts/subproject.bst b/tests/format/junctions/conflicts/subproject.bst new file mode 100644 index 000000000..c88189cb0 --- /dev/null +++ b/tests/format/junctions/conflicts/subproject.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: subproject diff --git a/tests/format/junctions/conflicts/subproject/project.conf b/tests/format/junctions/conflicts/subproject/project.conf new file mode 100644 index 000000000..39a53e2ab --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/project.conf @@ -0,0 +1,2 @@ +name: subtest +min-version: 2.0 diff --git a/tests/format/junctions/conflicts/subproject/sub.txt b/tests/format/junctions/conflicts/subproject/sub.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/sub.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/conflicts/subproject/subsubproject-conflict-target.bst b/tests/format/junctions/conflicts/subproject/subsubproject-conflict-target.bst new file mode 100644 index 000000000..e9bf1c57e --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject-conflict-target.bst @@ -0,0 +1,4 @@ +kind: stack + +depends: +- subsubproject-conflict.bst:target.bst diff --git a/tests/format/junctions/conflicts/subproject/subsubproject-conflict.bst b/tests/format/junctions/conflicts/subproject/subsubproject-conflict.bst new file mode 100644 index 000000000..e4715ea1d --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject-conflict.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: subsubproject-conflict diff --git a/tests/format/junctions/conflicts/subproject/subsubproject-conflict/deepsurprise.txt b/tests/format/junctions/conflicts/subproject/subsubproject-conflict/deepsurprise.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject-conflict/deepsurprise.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/conflicts/subproject/subsubproject-conflict/project.conf b/tests/format/junctions/conflicts/subproject/subsubproject-conflict/project.conf new file mode 100644 index 000000000..20636c446 --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject-conflict/project.conf @@ -0,0 +1,2 @@ +name: test +min-version: 2.0 diff --git a/tests/format/junctions/conflicts/subproject/subsubproject-conflict/target.bst b/tests/format/junctions/conflicts/subproject/subsubproject-conflict/target.bst new file mode 100644 index 000000000..981f29da3 --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject-conflict/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: deepsurprise.txt diff --git a/tests/format/junctions/conflicts/subproject/subsubproject.bst b/tests/format/junctions/conflicts/subproject/subsubproject.bst new file mode 100644 index 000000000..f535ab0e0 --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: subsubproject diff --git a/tests/format/junctions/conflicts/subproject/subsubproject/project.conf b/tests/format/junctions/conflicts/subproject/subsubproject/project.conf new file mode 100644 index 000000000..d11bcbb30 --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject/project.conf @@ -0,0 +1,2 @@ +name: subsubtest +min-version: 2.0 diff --git a/tests/format/junctions/conflicts/subproject/subsubproject/subsub.txt b/tests/format/junctions/conflicts/subproject/subsubproject/subsub.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject/subsub.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject.bst b/tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject.bst new file mode 100644 index 000000000..bce64597b --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: subsubsubproject diff --git a/tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/project.conf b/tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/project.conf new file mode 100644 index 000000000..e508da808 --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/project.conf @@ -0,0 +1,2 @@ +name: subsubsubtest +min-version: 2.0 diff --git a/tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/subsubsub.txt b/tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/subsubsub.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/subsubsub.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/target.bst b/tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/target.bst new file mode 100644 index 000000000..351c9a22d --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: subsubsub.txt diff --git a/tests/format/junctions/conflicts/subproject/subsubproject/target.bst b/tests/format/junctions/conflicts/subproject/subsubproject/target.bst new file mode 100644 index 000000000..afafac601 --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/subsubproject/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: subsub.txt diff --git a/tests/format/junctions/conflicts/subproject/target.bst b/tests/format/junctions/conflicts/subproject/target.bst new file mode 100644 index 000000000..e24d9bbb4 --- /dev/null +++ b/tests/format/junctions/conflicts/subproject/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: sub.txt diff --git a/tests/format/junctions/conflicts/subproject2.bst b/tests/format/junctions/conflicts/subproject2.bst new file mode 100644 index 000000000..2343652e1 --- /dev/null +++ b/tests/format/junctions/conflicts/subproject2.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: subproject2 diff --git a/tests/format/junctions/conflicts/subproject2/inc.yaml b/tests/format/junctions/conflicts/subproject2/inc.yaml new file mode 100644 index 000000000..bbc78380f --- /dev/null +++ b/tests/format/junctions/conflicts/subproject2/inc.yaml @@ -0,0 +1 @@ +test: Pony diff --git a/tests/format/junctions/conflicts/subproject2/plugins/found.py b/tests/format/junctions/conflicts/subproject2/plugins/found.py new file mode 100644 index 000000000..34a7e4398 --- /dev/null +++ b/tests/format/junctions/conflicts/subproject2/plugins/found.py @@ -0,0 +1,19 @@ +from buildstream import Element + + +class Found(Element): + BST_MIN_VERSION = "2.0" + + def configure(self, node): + pass + + def preflight(self): + pass + + def get_unique_key(self): + return {} + + +# Plugin entry point +def setup(): + return Found diff --git a/tests/format/junctions/conflicts/subproject2/project.conf b/tests/format/junctions/conflicts/subproject2/project.conf new file mode 100644 index 000000000..286045aa0 --- /dev/null +++ b/tests/format/junctions/conflicts/subproject2/project.conf @@ -0,0 +1,8 @@ +name: subtest +min-version: 2.0 + +plugins: +- origin: local + path: plugins + elements: + - found diff --git a/tests/format/junctions/conflicts/subproject2/sub2.txt b/tests/format/junctions/conflicts/subproject2/sub2.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/conflicts/subproject2/sub2.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/conflicts/subproject2/target.bst b/tests/format/junctions/conflicts/subproject2/target.bst new file mode 100644 index 000000000..a1d15e942 --- /dev/null +++ b/tests/format/junctions/conflicts/subproject2/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: sub2.txt diff --git a/tests/format/junctions/invalid/subproject-self-override.bst b/tests/format/junctions/invalid/subproject-self-override.bst new file mode 100644 index 000000000..22a8b3db8 --- /dev/null +++ b/tests/format/junctions/invalid/subproject-self-override.bst @@ -0,0 +1,16 @@ +kind: junction +sources: +- kind: local + path: base + +# +# In this case, the "base" subproject does not really +# have a subproject to override, but we're using this +# setup to test the error of overriding a subproject +# with the junction declaring the override, which will +# happen sooner than noticing there is not a subproject.bst +# to override. +# +config: + overrides: + subproject.bst: subproject-self-override.bst diff --git a/tests/format/junctions/invalid/target-self-override.bst b/tests/format/junctions/invalid/target-self-override.bst new file mode 100644 index 000000000..0f7b65676 --- /dev/null +++ b/tests/format/junctions/invalid/target-self-override.bst @@ -0,0 +1,4 @@ +kind: stack + +depends: +- subproject-self-override.bst:target.bst diff --git a/tests/format/junctions/override-twice/override.bst b/tests/format/junctions/override-twice/override.bst new file mode 100644 index 000000000..c0564b631 --- /dev/null +++ b/tests/format/junctions/override-twice/override.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: override diff --git a/tests/format/junctions/override-twice/override/overridden-again.txt b/tests/format/junctions/override-twice/override/overridden-again.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/override-twice/override/overridden-again.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/override-twice/override/project.conf b/tests/format/junctions/override-twice/override/project.conf new file mode 100644 index 000000000..e508da808 --- /dev/null +++ b/tests/format/junctions/override-twice/override/project.conf @@ -0,0 +1,2 @@ +name: subsubsubtest +min-version: 2.0 diff --git a/tests/format/junctions/override-twice/override/target.bst b/tests/format/junctions/override-twice/override/target.bst new file mode 100644 index 000000000..c05396c42 --- /dev/null +++ b/tests/format/junctions/override-twice/override/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: overridden-again.txt diff --git a/tests/format/junctions/override-twice/project.conf b/tests/format/junctions/override-twice/project.conf new file mode 100644 index 000000000..20636c446 --- /dev/null +++ b/tests/format/junctions/override-twice/project.conf @@ -0,0 +1,2 @@ +name: test +min-version: 2.0 diff --git a/tests/format/junctions/override-twice/subproject.bst b/tests/format/junctions/override-twice/subproject.bst new file mode 100644 index 000000000..297dbe90d --- /dev/null +++ b/tests/format/junctions/override-twice/subproject.bst @@ -0,0 +1,8 @@ +kind: junction +sources: +- kind: local + path: subproject + +config: + overrides: + subsubproject.bst:subsubsubproject.bst: override.bst diff --git a/tests/format/junctions/override-twice/subproject/override.bst b/tests/format/junctions/override-twice/subproject/override.bst new file mode 100644 index 000000000..c0564b631 --- /dev/null +++ b/tests/format/junctions/override-twice/subproject/override.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: override diff --git a/tests/format/junctions/override-twice/subproject/override/overridden.txt b/tests/format/junctions/override-twice/subproject/override/overridden.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/override-twice/subproject/override/overridden.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/override-twice/subproject/override/project.conf b/tests/format/junctions/override-twice/subproject/override/project.conf new file mode 100644 index 000000000..e508da808 --- /dev/null +++ b/tests/format/junctions/override-twice/subproject/override/project.conf @@ -0,0 +1,2 @@ +name: subsubsubtest +min-version: 2.0 diff --git a/tests/format/junctions/override-twice/subproject/override/target.bst b/tests/format/junctions/override-twice/subproject/override/target.bst new file mode 100644 index 000000000..8a725bab6 --- /dev/null +++ b/tests/format/junctions/override-twice/subproject/override/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: overridden.txt diff --git a/tests/format/junctions/override-twice/subproject/project.conf b/tests/format/junctions/override-twice/subproject/project.conf new file mode 100644 index 000000000..39a53e2ab --- /dev/null +++ b/tests/format/junctions/override-twice/subproject/project.conf @@ -0,0 +1,2 @@ +name: subtest +min-version: 2.0 diff --git a/tests/format/junctions/override-twice/subproject/subsubproject.bst b/tests/format/junctions/override-twice/subproject/subsubproject.bst new file mode 100644 index 000000000..fd5101878 --- /dev/null +++ b/tests/format/junctions/override-twice/subproject/subsubproject.bst @@ -0,0 +1,8 @@ +kind: junction +sources: +- kind: local + path: subsubproject + +config: + overrides: + subsubsubproject.bst: override.bst diff --git a/tests/format/junctions/override-twice/subproject/subsubproject/project.conf b/tests/format/junctions/override-twice/subproject/subsubproject/project.conf new file mode 100644 index 000000000..d11bcbb30 --- /dev/null +++ b/tests/format/junctions/override-twice/subproject/subsubproject/project.conf @@ -0,0 +1,2 @@ +name: subsubtest +min-version: 2.0 diff --git a/tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject.bst b/tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject.bst new file mode 100644 index 000000000..bce64597b --- /dev/null +++ b/tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: subsubsubproject diff --git a/tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/original.txt b/tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/original.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/original.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/project.conf b/tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/project.conf new file mode 100644 index 000000000..e508da808 --- /dev/null +++ b/tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/project.conf @@ -0,0 +1,2 @@ +name: subsubsubtest +min-version: 2.0 diff --git a/tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/target.bst b/tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/target.bst new file mode 100644 index 000000000..61edc6467 --- /dev/null +++ b/tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: original.txt diff --git a/tests/format/junctions/override-twice/target.bst b/tests/format/junctions/override-twice/target.bst new file mode 100644 index 000000000..a748441bf --- /dev/null +++ b/tests/format/junctions/override-twice/target.bst @@ -0,0 +1,4 @@ +kind: stack + +depends: +- subproject.bst:subsubproject.bst:subsubsubproject.bst:target.bst diff --git a/tests/format/junctions/overrides/overridden-subsubproject.bst b/tests/format/junctions/overrides/overridden-subsubproject.bst new file mode 100644 index 000000000..bb089ab48 --- /dev/null +++ b/tests/format/junctions/overrides/overridden-subsubproject.bst @@ -0,0 +1,10 @@ +# This junction resides at the toplevel project +# +# It is used to override the subrpoject's junction to +# the subsubproject, and instead point that to the +# subsubsubproject. +# +kind: junction +sources: +- kind: local + path: subproject/subsubproject/subsubsubproject diff --git a/tests/format/junctions/overrides/overridden-subsubsubproject.bst b/tests/format/junctions/overrides/overridden-subsubsubproject.bst new file mode 100644 index 000000000..ba349d958 --- /dev/null +++ b/tests/format/junctions/overrides/overridden-subsubsubproject.bst @@ -0,0 +1,10 @@ +# This junction resides at the toplevel project +# +# It is used to override the subrpoject's subsubproject's +# junction to the subsubsubproject, and instead point that to +# the surpriseproject. +# +kind: junction +sources: +- kind: local + path: surpriseproject diff --git a/tests/format/junctions/overrides/project.conf b/tests/format/junctions/overrides/project.conf new file mode 100644 index 000000000..20636c446 --- /dev/null +++ b/tests/format/junctions/overrides/project.conf @@ -0,0 +1,2 @@ +name: test +min-version: 2.0 diff --git a/tests/format/junctions/overrides/subproject-overriden-with-deep-subproject.bst b/tests/format/junctions/overrides/subproject-overriden-with-deep-subproject.bst new file mode 100644 index 000000000..f1878c07d --- /dev/null +++ b/tests/format/junctions/overrides/subproject-overriden-with-deep-subproject.bst @@ -0,0 +1,8 @@ +kind: junction +sources: +- kind: local + path: subproject + +config: + overrides: + subsubproject.bst: surpriseproject.bst:deepsurpriseproject.bst diff --git a/tests/format/junctions/overrides/subproject-with-deep-override.bst b/tests/format/junctions/overrides/subproject-with-deep-override.bst new file mode 100644 index 000000000..1be1955a7 --- /dev/null +++ b/tests/format/junctions/overrides/subproject-with-deep-override.bst @@ -0,0 +1,8 @@ +kind: junction +sources: +- kind: local + path: subproject + +config: + overrides: + subsubproject.bst:subsubsubproject.bst: overridden-subsubsubproject.bst diff --git a/tests/format/junctions/overrides/subproject-with-override.bst b/tests/format/junctions/overrides/subproject-with-override.bst new file mode 100644 index 000000000..9c3398b2e --- /dev/null +++ b/tests/format/junctions/overrides/subproject-with-override.bst @@ -0,0 +1,8 @@ +kind: junction +sources: +- kind: local + path: subproject + +config: + overrides: + subsubproject.bst: overridden-subsubproject.bst diff --git a/tests/format/junctions/overrides/subproject.bst b/tests/format/junctions/overrides/subproject.bst new file mode 100644 index 000000000..c88189cb0 --- /dev/null +++ b/tests/format/junctions/overrides/subproject.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: subproject diff --git a/tests/format/junctions/overrides/subproject/project.conf b/tests/format/junctions/overrides/subproject/project.conf new file mode 100644 index 000000000..39a53e2ab --- /dev/null +++ b/tests/format/junctions/overrides/subproject/project.conf @@ -0,0 +1,2 @@ +name: subtest +min-version: 2.0 diff --git a/tests/format/junctions/overrides/subproject/sub.txt b/tests/format/junctions/overrides/subproject/sub.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/overrides/subproject/sub.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/overrides/subproject/subsubproject.bst b/tests/format/junctions/overrides/subproject/subsubproject.bst new file mode 100644 index 000000000..f535ab0e0 --- /dev/null +++ b/tests/format/junctions/overrides/subproject/subsubproject.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: subsubproject diff --git a/tests/format/junctions/overrides/subproject/subsubproject/project.conf b/tests/format/junctions/overrides/subproject/subsubproject/project.conf new file mode 100644 index 000000000..d11bcbb30 --- /dev/null +++ b/tests/format/junctions/overrides/subproject/subsubproject/project.conf @@ -0,0 +1,2 @@ +name: subsubtest +min-version: 2.0 diff --git a/tests/format/junctions/overrides/subproject/subsubproject/subsub.txt b/tests/format/junctions/overrides/subproject/subsubproject/subsub.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/overrides/subproject/subsubproject/subsub.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject.bst b/tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject.bst new file mode 100644 index 000000000..bce64597b --- /dev/null +++ b/tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: subsubsubproject diff --git a/tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/project.conf b/tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/project.conf new file mode 100644 index 000000000..e508da808 --- /dev/null +++ b/tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/project.conf @@ -0,0 +1,2 @@ +name: subsubsubtest +min-version: 2.0 diff --git a/tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/subsubsub.txt b/tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/subsubsub.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/subsubsub.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/target.bst b/tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/target.bst new file mode 100644 index 000000000..351c9a22d --- /dev/null +++ b/tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: subsubsub.txt diff --git a/tests/format/junctions/overrides/subproject/subsubproject/target.bst b/tests/format/junctions/overrides/subproject/subsubproject/target.bst new file mode 100644 index 000000000..afafac601 --- /dev/null +++ b/tests/format/junctions/overrides/subproject/subsubproject/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: subsub.txt diff --git a/tests/format/junctions/overrides/subproject/target.bst b/tests/format/junctions/overrides/subproject/target.bst new file mode 100644 index 000000000..e24d9bbb4 --- /dev/null +++ b/tests/format/junctions/overrides/subproject/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: sub.txt diff --git a/tests/format/junctions/overrides/surpriseproject.bst b/tests/format/junctions/overrides/surpriseproject.bst new file mode 100644 index 000000000..427c4ebdf --- /dev/null +++ b/tests/format/junctions/overrides/surpriseproject.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: surpriseproject diff --git a/tests/format/junctions/overrides/surpriseproject/deepsurpriseproject.bst b/tests/format/junctions/overrides/surpriseproject/deepsurpriseproject.bst new file mode 100644 index 000000000..62423a996 --- /dev/null +++ b/tests/format/junctions/overrides/surpriseproject/deepsurpriseproject.bst @@ -0,0 +1,4 @@ +kind: junction +sources: +- kind: local + path: deepsurpriseproject diff --git a/tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/deepsurprise.txt b/tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/deepsurprise.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/deepsurprise.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/project.conf b/tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/project.conf new file mode 100644 index 000000000..cf657b17e --- /dev/null +++ b/tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/project.conf @@ -0,0 +1,2 @@ +name: deepsurprise +min-version: 2.0 diff --git a/tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/target.bst b/tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/target.bst new file mode 100644 index 000000000..981f29da3 --- /dev/null +++ b/tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: deepsurprise.txt diff --git a/tests/format/junctions/overrides/surpriseproject/project.conf b/tests/format/junctions/overrides/surpriseproject/project.conf new file mode 100644 index 000000000..0d812aed4 --- /dev/null +++ b/tests/format/junctions/overrides/surpriseproject/project.conf @@ -0,0 +1,2 @@ +name: surprise +min-version: 2.0 diff --git a/tests/format/junctions/overrides/surpriseproject/surprise.txt b/tests/format/junctions/overrides/surpriseproject/surprise.txt new file mode 100644 index 000000000..f73f3093f --- /dev/null +++ b/tests/format/junctions/overrides/surpriseproject/surprise.txt @@ -0,0 +1 @@ +file diff --git a/tests/format/junctions/overrides/surpriseproject/target.bst b/tests/format/junctions/overrides/surpriseproject/target.bst new file mode 100644 index 000000000..bc496303e --- /dev/null +++ b/tests/format/junctions/overrides/surpriseproject/target.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: surprise.txt diff --git a/tests/format/junctions/overrides/target-overridden-subsubproject.bst b/tests/format/junctions/overrides/target-overridden-subsubproject.bst new file mode 100644 index 000000000..18610631a --- /dev/null +++ b/tests/format/junctions/overrides/target-overridden-subsubproject.bst @@ -0,0 +1,12 @@ +kind: stack + +# Here we depend on the target in subproject's subsubproject, +# however we've overridden the subproject's subsubproject with +# our own. +# +# We should still be able to address that overridden subproject +# and access the project we've overridden it with, which will +# turn out to be the subsubsubproject. +# +depends: +- subproject-with-override.bst:subsubproject.bst:target.bst diff --git a/tests/format/junctions/overrides/target-overridden-subsubsubproject.bst b/tests/format/junctions/overrides/target-overridden-subsubsubproject.bst new file mode 100644 index 000000000..5c5437b7a --- /dev/null +++ b/tests/format/junctions/overrides/target-overridden-subsubsubproject.bst @@ -0,0 +1,8 @@ +kind: stack + +# Here we depend on the target in subproject's subsubproject's +# subsubsubproject, however we've overridden the subproject's +# subsubproject's subsubsubproject with our own surprise project +# +depends: +- subproject-with-deep-override.bst:subsubproject.bst:subsubsubproject.bst:target.bst diff --git a/tests/format/junctions/overrides/target-overridden-with-deepsubproject.bst b/tests/format/junctions/overrides/target-overridden-with-deepsubproject.bst new file mode 100644 index 000000000..bf5240906 --- /dev/null +++ b/tests/format/junctions/overrides/target-overridden-with-deepsubproject.bst @@ -0,0 +1,4 @@ +kind: stack + +depends: +- subproject-overriden-with-deep-subproject.bst:subsubproject.bst:target.bst -- cgit v1.2.1