This is an automated email from the ASF dual-hosted git repository. tvb pushed a commit to branch jennis/read_only_dir_in_tarball in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 66e5535eb5b9684832e0497e315ba915a10a973b Author: James Ennis <[email protected]> AuthorDate: Thu Aug 23 13:34:32 2018 +0100 tar.py: Add test for a tarball containing a read-only dir --- tests/sources/tar.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/sources/tar.py b/tests/sources/tar.py index fb02de3..687bd67 100644 --- a/tests/sources/tar.py +++ b/tests/sources/tar.py @@ -3,6 +3,7 @@ import pytest import tarfile import tempfile import subprocess +from shutil import copyfile from buildstream._exceptions import ErrorDomain from buildstream import _yaml @@ -257,3 +258,27 @@ def test_stage_default_basedir_lzip(cli, tmpdir, datafiles, srcdir): original_contents = list_dir_contents(original_dir) checkout_contents = list_dir_contents(checkoutdir) assert(checkout_contents == original_contents) + + +# Test that a tarball that contains a read only dir breaks [email protected](os.path.join(DATA_DIR, 'read-only')) +def test_read_only_dir(cli, tmpdir, datafiles, srcdir): + project = os.path.join(datafiles.dirname, datafiles.basename) + generate_project(project, tmpdir) + + # Get the tarball in tests/sources/tar/read-only/content + # + # NOTE that we need to do this because tarfile.open and tar.add() + # are packing the tar up with writeable files and dirs + tarball = os.path.join(str(datafiles), 'content', 'a.tar.gz') + if not os.path.exists(tarball): + raise FileNotFoundError('{} does not exist'.format(tarball)) + copyfile(tarball, os.path.join(tmpdir, 'a.tar.gz')) + + # Track, fetch, build, checkout + result = cli.run(project=project, args=['track', 'target.bst']) + result.assert_success() + result = cli.run(project=project, args=['fetch', 'target.bst']) + result.assert_success() + result = cli.run(project=project, args=['build', 'target.bst']) + result.assert_success()
