diff options
author | Gökçen Nurlu <gnurlu1@bloomberg.net> | 2018-06-01 10:49:56 +0100 |
---|---|---|
committer | Tristan Van Berkom <tristan.van.berkom@gmail.com> | 2018-06-05 16:23:22 +0000 |
commit | fe24fc3b2903efa4ca728a31fe3f021c8215fa22 (patch) | |
tree | 18449a133593e833cffc59997a4bfaea3dad4f5f /tests/integration | |
parent | 279dcb400ac0de34202ad395c722b603473ff540 (diff) | |
download | buildstream-fe24fc3b2903efa4ca728a31fe3f021c8215fa22.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.
Diffstat (limited to 'tests/integration')
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 |