summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Gomes <tiago.gomes@codethink.co.uk>2018-07-31 16:37:25 +0100
committerTiago Gomes <tiago.avv@gmail.com>2018-08-02 11:24:43 +0000
commitb7362a3226bd181306d02c760a4dfd6da3acf7fb (patch)
tree169e8d172e7a09aeaaeea1fc66a2db3f99548ca5
parent731328ad933454c766d0708e14d7ed54ab0738c2 (diff)
downloadbuildstream-b7362a3226bd181306d02c760a4dfd6da3acf7fb.tar.gz
tests: add additional tests to local plugin
-rw-r--r--tests/sources/local.py49
-rw-r--r--tests/sources/local/invalid-relative-path/file.txt1
-rw-r--r--tests/sources/local/invalid-relative-path/project.conf2
-rw-r--r--tests/sources/local/invalid-relative-path/target.bst5
4 files changed, 55 insertions, 2 deletions
diff --git a/tests/sources/local.py b/tests/sources/local.py
index 8d2307e27..de12473d9 100644
--- a/tests/sources/local.py
+++ b/tests/sources/local.py
@@ -2,7 +2,7 @@ import os
import pytest
from buildstream._exceptions import ErrorDomain, LoadErrorReason
-from tests.testutils import cli
+from tests.testutils import cli, filetypegenerator
DATA_DIR = os.path.join(
os.path.dirname(os.path.realpath(__file__)),
@@ -11,7 +11,7 @@ DATA_DIR = os.path.join(
@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
-def test_missing_file(cli, tmpdir, datafiles):
+def test_missing_path(cli, tmpdir, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename)
# Removing the local file causes preflight to fail
@@ -25,6 +25,51 @@ def test_missing_file(cli, tmpdir, datafiles):
@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
+def test_non_regular_file_or_directory(cli, tmpdir, datafiles):
+ project = os.path.join(datafiles.dirname, datafiles.basename)
+ localfile = os.path.join(project, 'file.txt')
+
+ for file_type in filetypegenerator.generate_file_types(localfile):
+ result = cli.run(project=project, args=[
+ 'show', 'target.bst'
+ ])
+ if os.path.isdir(localfile) and not os.path.islink(localfile):
+ result.assert_success()
+ elif os.path.isfile(localfile) and not os.path.islink(localfile):
+ result.assert_success()
+ else:
+ result.assert_main_error(ErrorDomain.LOAD,
+ LoadErrorReason.PROJ_PATH_INVALID_KIND)
+
+
+@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
+def test_invalid_absolute_path(cli, tmpdir, datafiles):
+ project = os.path.join(datafiles.dirname, datafiles.basename)
+
+ with open(os.path.join(project, "target.bst"), 'r') as f:
+ old_yaml = f.read()
+
+ new_yaml = old_yaml.replace("file.txt", os.path.join(project, "file.txt"))
+ assert old_yaml != new_yaml
+
+ with open(os.path.join(project, "target.bst"), 'w') as f:
+ f.write(new_yaml)
+
+ result = cli.run(project=project, args=['show', 'target.bst'])
+ result.assert_main_error(ErrorDomain.LOAD,
+ LoadErrorReason.PROJ_PATH_INVALID)
+
+
+@pytest.mark.datafiles(os.path.join(DATA_DIR, 'invalid-relative-path'))
+def test_invalid_relative_path(cli, tmpdir, datafiles):
+ project = os.path.join(datafiles.dirname, datafiles.basename)
+
+ result = cli.run(project=project, args=['show', 'target.bst'])
+ result.assert_main_error(ErrorDomain.LOAD,
+ LoadErrorReason.PROJ_PATH_INVALID)
+
+
+@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_stage_file(cli, tmpdir, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename)
checkoutdir = os.path.join(str(tmpdir), "checkout")
diff --git a/tests/sources/local/invalid-relative-path/file.txt b/tests/sources/local/invalid-relative-path/file.txt
new file mode 100644
index 000000000..a496efee8
--- /dev/null
+++ b/tests/sources/local/invalid-relative-path/file.txt
@@ -0,0 +1 @@
+This is a text file
diff --git a/tests/sources/local/invalid-relative-path/project.conf b/tests/sources/local/invalid-relative-path/project.conf
new file mode 100644
index 000000000..afa0f5475
--- /dev/null
+++ b/tests/sources/local/invalid-relative-path/project.conf
@@ -0,0 +1,2 @@
+# Basic project
+name: foo
diff --git a/tests/sources/local/invalid-relative-path/target.bst b/tests/sources/local/invalid-relative-path/target.bst
new file mode 100644
index 000000000..b09f180e8
--- /dev/null
+++ b/tests/sources/local/invalid-relative-path/target.bst
@@ -0,0 +1,5 @@
+kind: import
+description: This is the pony
+sources:
+- kind: local
+ path: ../invalid-relative-path/file.txt