diff options
author | Gökçen Nurlu <gnurlu1@bloomberg.net> | 2018-06-01 10:49:56 +0100 |
---|---|---|
committer | Gökçen Nurlu <gnurlu1@bloomberg.net> | 2018-06-01 16:02:46 +0100 |
commit | 311b108f996f5e734d10be8db7fb8903f2933f78 (patch) | |
tree | 5cfd3e529aae359942e1407f2d25d0854aa70cc8 | |
parent | c0de75e2d44d9187181b4501887493c0057dedb0 (diff) | |
download | buildstream-311b108f996f5e734d10be8db7fb8903f2933f78.tar.gz |
Add test to verify cleanup behaviour after bwrap
This adds `sandbox-bwrap/test-cleanup.bst` to test the cleanup behaviour in
`sandbox/_sandboxbwrap.py`: There already exists a non-empty `/tmp` folder and
BuildStream should not try to remove it after a command is executed with bwrap.
4 files changed, 51 insertions, 0 deletions
diff --git a/tests/integration/project/elements/sandbox-bwrap/base-with-tmp.bst b/tests/integration/project/elements/sandbox-bwrap/base-with-tmp.bst new file mode 100644 index 000000000..5c9fa6083 --- /dev/null +++ b/tests/integration/project/elements/sandbox-bwrap/base-with-tmp.bst @@ -0,0 +1,6 @@ +kind: import +description: Base for after-sandbox cleanup test + +sources: + - kind: local + path: files/base-with-tmp/ diff --git a/tests/integration/project/elements/sandbox-bwrap/test-cleanup.bst b/tests/integration/project/elements/sandbox-bwrap/test-cleanup.bst new file mode 100644 index 000000000..2a89dd3ee --- /dev/null +++ b/tests/integration/project/elements/sandbox-bwrap/test-cleanup.bst @@ -0,0 +1,13 @@ +kind: manual +description: A dummy project to utilize a base with existing /tmp folder. + +depends: + - filename: base.bst + type: build + + - filename: sandbox-bwrap/base-with-tmp.bst + +config: + build-commands: + - | + true diff --git a/tests/integration/project/files/base-with-tmp/tmp/dummy b/tests/integration/project/files/base-with-tmp/tmp/dummy new file mode 100644 index 000000000..d18f28449 --- /dev/null +++ b/tests/integration/project/files/base-with-tmp/tmp/dummy @@ -0,0 +1 @@ +dummy!
\ No newline at end of file diff --git a/tests/integration/sandbox-bwrap.py b/tests/integration/sandbox-bwrap.py new file mode 100644 index 000000000..7d2a18498 --- /dev/null +++ b/tests/integration/sandbox-bwrap.py @@ -0,0 +1,31 @@ +import os +import pytest + +from tests.testutils import cli_integration as cli +from tests.testutils.integration import assert_contains +from tests.testutils.site import HAVE_BWRAP + + +pytestmark = pytest.mark.integration + + +DATA_DIR = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "project" +) + + +# Bubblewrap sandbox doesn't remove the dirs it created during its execution, +# so BuildStream tries to remove them to do good. BuildStream should be extra +# careful when those folders already exist and should not touch them, though. +@pytest.mark.integration +@pytest.mark.skipif(not HAVE_BWRAP, reason='Only available with bubblewrap') +@pytest.mark.datafiles(DATA_DIR) +def test_sandbox_bwrap_cleanup_build(cli, tmpdir, datafiles): + project = os.path.join(datafiles.dirname, datafiles.basename) + # This element depends on a base image with non-empty `/tmp` folder. + element_name = 'sandbox-bwrap/test-cleanup.bst' + + # Here, BuildStream should not attempt any rmdir etc. + result = cli.run(project=project, args=['build', element_name]) + assert result.exit_code == 0 |