Skip to content
Snippets Groups Projects
Commit 73eddff4 authored by James Ennis's avatar James Ennis
Browse files

tests/source: Add tests for invalid absolute paths

parent e753d28f
No related branches found
No related tags found
Loading
Pipeline #36754977 failed
Showing
with 57 additions and 10 deletions
......@@ -12,7 +12,7 @@ DATA_DIR = os.path.join(
@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_missing_path(cli, tmpdir, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename)
project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
# Removing the local file causes preflight to fail
localfile = os.path.join(project, 'file.txt')
......@@ -26,7 +26,7 @@ def test_missing_path(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)
project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
localfile = os.path.join(project, 'file.txt')
for file_type in filetypegenerator.generate_file_types(localfile):
......@@ -44,7 +44,7 @@ def test_non_regular_file_or_directory(cli, tmpdir, datafiles):
@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_valid_absolute_path(cli, tmpdir, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename)
project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
with open(os.path.join(project, "target.bst"), 'r') as f:
old_yaml = f.read()
......@@ -60,6 +60,26 @@ def test_valid_absolute_path(cli, tmpdir, datafiles):
result.assert_success()
@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, 'project')
with open(os.path.join(project, "target.bst"), 'r') as f:
old_yaml = f.read()
outside_project = os.path.dirname(project)
new_yaml = old_yaml.replace("file.txt",
os.path.abspath(os.path.join(outside_project, "outside_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)
......@@ -71,7 +91,7 @@ def test_invalid_relative_path(cli, tmpdir, datafiles):
@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_stage_file(cli, tmpdir, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename)
project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
checkoutdir = os.path.join(str(tmpdir), "checkout")
# Build, checkout
......
This is a text file outside the project
......@@ -12,7 +12,7 @@ DATA_DIR = os.path.join(
@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_missing_patch(cli, tmpdir, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename)
project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
# Removing the local file causes preflight to fail
localfile = os.path.join(project, 'file_1.patch')
......@@ -26,7 +26,7 @@ def test_missing_patch(cli, tmpdir, datafiles):
@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_non_regular_file_patch(cli, tmpdir, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename)
project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
patch_path = os.path.join(project, 'irregular_file.patch')
for file_type in filetypegenerator.generate_file_types(patch_path):
......@@ -42,7 +42,7 @@ def test_non_regular_file_patch(cli, tmpdir, datafiles):
@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_valid_absolute_path(cli, tmpdir, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename)
project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
with open(os.path.join(project, "target.bst"), 'r') as f:
old_yaml = f.read()
......@@ -57,6 +57,25 @@ def test_valid_absolute_path(cli, tmpdir, datafiles):
result.assert_success()
@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, 'project')
outside_project = os.path.dirname(project)
with open(os.path.join(project, "target.bst"), 'r') as f:
old_yaml = f.read()
new_yaml = old_yaml.replace("file_1.patch",
os.path.abspath(os.path.join(outside_project, "outside.patch")))
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)
......@@ -68,7 +87,7 @@ def test_invalid_relative_path(cli, tmpdir, datafiles):
@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_stage_and_patch(cli, tmpdir, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename)
project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
checkoutdir = os.path.join(str(tmpdir), "checkout")
# Build, checkout
......@@ -84,7 +103,7 @@ def test_stage_and_patch(cli, tmpdir, datafiles):
@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_stage_file_nonexistent_dir(cli, tmpdir, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename)
project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
checkoutdir = os.path.join(str(tmpdir), "checkout")
# Fails at build time because it tries to patch into a non-existing directory
......@@ -95,7 +114,7 @@ def test_stage_file_nonexistent_dir(cli, tmpdir, datafiles):
@pytest.mark.datafiles(os.path.join(DATA_DIR, 'basic'))
def test_stage_file_empty_dir(cli, tmpdir, datafiles):
project = os.path.join(datafiles.dirname, datafiles.basename)
project = os.path.join(datafiles.dirname, datafiles.basename, 'project')
checkoutdir = os.path.join(str(tmpdir), "checkout")
# Fails at build time because it tries to patch with nothing else staged
......
diff --git a/file.txt b/file.txt
index a496efe..341ef26 100644
--- a/file.txt
+++ b/file.txt
@@ -1 +1 @@
-This is a text file
+This is text file with superpowers
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment