diff options
Diffstat (limited to 'tests/sources/remote.py')
-rw-r--r-- | tests/sources/remote.py | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/tests/sources/remote.py b/tests/sources/remote.py index b7c8c08cf..d3968395f 100644 --- a/tests/sources/remote.py +++ b/tests/sources/remote.py @@ -1,4 +1,5 @@ import os +import stat import pytest from buildstream._exceptions import ErrorDomain @@ -82,7 +83,14 @@ def test_simple_file_build(cli, tmpdir, datafiles): result.assert_success() # Note that the url of the file in target.bst is actually /dir/file # but this tests confirms we take the basename - assert(os.path.exists(os.path.join(checkoutdir, 'file'))) + checkout_file = os.path.join(checkoutdir, 'file') + assert(os.path.exists(checkout_file)) + + mode = os.stat(checkout_file).st_mode + # Assert not executable by anyone + assert(not (mode & (stat.S_IEXEC | stat.S_IXGRP | stat.S_IXOTH))) + # Assert not writeable by anyone other than me + assert(not (mode & (stat.S_IWGRP | stat.S_IWOTH))) @pytest.mark.datafiles(os.path.join(DATA_DIR, 'single-file-custom-name')) @@ -119,6 +127,7 @@ def test_unique_key(cli, tmpdir, datafiles): generate_project(project, tmpdir) assert cli.get_element_state(project, 'target.bst') == "fetch needed" assert cli.get_element_state(project, 'target-custom.bst') == "fetch needed" + assert cli.get_element_state(project, 'target-custom-executable.bst') == "fetch needed" # Try to fetch it result = cli.run(project=project, args=[ 'fetch', 'target.bst' @@ -127,7 +136,31 @@ def test_unique_key(cli, tmpdir, datafiles): # We should download the file only once assert cli.get_element_state(project, 'target.bst') == 'buildable' assert cli.get_element_state(project, 'target-custom.bst') == 'buildable' + assert cli.get_element_state(project, 'target-custom-executable.bst') == 'buildable' # But the cache key is different because the 'filename' is different. assert cli.get_element_key(project, 'target.bst') != \ - cli.get_element_key(project, 'target-custom.bst') + cli.get_element_key(project, 'target-custom.bst') != \ + cli.get_element_key(project, 'target-custom-executable.bst') + + +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'unique-keys')) +def test_executable(cli, tmpdir, datafiles): + '''This test confirms that the 'ecxecutable' parameter is honoured. + ''' + project = os.path.join(datafiles.dirname, datafiles.basename) + generate_project(project, tmpdir) + checkoutdir = os.path.join(str(tmpdir), "checkout") + assert cli.get_element_state(project, 'target-custom-executable.bst') == "fetch needed" + # Try to fetch it + result = cli.run(project=project, args=[ + 'build', 'target-custom-executable.bst' + ]) + + result = cli.run(project=project, args=[ + 'checkout', 'target-custom-executable.bst', checkoutdir + ]) + mode = os.stat(os.path.join(checkoutdir, 'some-custom-file')).st_mode + assert (mode & stat.S_IEXEC) + # Assert executable by anyone + assert(mode & (stat.S_IEXEC | stat.S_IXGRP | stat.S_IXOTH)) |