diff options
author | Jürg Billeter <j@bitron.ch> | 2018-09-24 14:42:41 +0100 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2018-09-24 14:59:59 +0100 |
commit | 86ea1173a485024a3f241263814632a70c43b867 (patch) | |
tree | f5ea23d1c0b657cbb5ece3261bd68c7b4f9669f4 | |
parent | da7e038bb2b256b7e880f9fcd86f6bf1403cb986 (diff) | |
download | buildstream-86ea1173a485024a3f241263814632a70c43b867.tar.gz |
tests/frontend/rebuild.py: Add strict/non-strict rebuild testjuerg/rebuild
Test rebuild that requires staging of weakly cached dependency.
This is a regression test for #607.
-rw-r--r-- | tests/frontend/project/elements/rebuild-target.bst | 4 | ||||
-rw-r--r-- | tests/frontend/rebuild.py | 36 |
2 files changed, 40 insertions, 0 deletions
diff --git a/tests/frontend/project/elements/rebuild-target.bst b/tests/frontend/project/elements/rebuild-target.bst new file mode 100644 index 000000000..49a02c217 --- /dev/null +++ b/tests/frontend/project/elements/rebuild-target.bst @@ -0,0 +1,4 @@ +kind: compose + +build-depends: +- target.bst diff --git a/tests/frontend/rebuild.py b/tests/frontend/rebuild.py new file mode 100644 index 000000000..d93aac0dc --- /dev/null +++ b/tests/frontend/rebuild.py @@ -0,0 +1,36 @@ +import os +import pytest +from tests.testutils import cli + +# Project directory +DATA_DIR = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "project", +) + + +def strict_args(args, strict): + if strict != "strict": + return ['--no-strict'] + args + return args + + +@pytest.mark.datafiles(DATA_DIR) +@pytest.mark.parametrize("strict", ["strict", "non-strict"]) +def test_rebuild(datafiles, cli, strict): + project = os.path.join(datafiles.dirname, datafiles.basename) + checkout = os.path.join(cli.directory, 'checkout') + + # First build intermediate target.bst + result = cli.run(project=project, args=strict_args(['build', 'target.bst'], strict)) + result.assert_success() + + # Modify base import + with open(os.path.join(project, 'files', 'dev-files', 'usr', 'include', 'new.h'), "w") as f: + f.write("#define NEW") + + # Rebuild base import and build top-level rebuild-target.bst + # In non-strict mode, this does not rebuild intermediate target.bst, + # which means that a weakly cached target.bst will be staged as dependency. + result = cli.run(project=project, args=strict_args(['build', 'rebuild-target.bst'], strict)) + result.assert_success() |