diff options
-rw-r--r-- | src/hydrilla/builder/build.py | 6 | ||||
-rw-r--r-- | src/hydrilla/builder/piggybacking.py | 4 | ||||
-rw-r--r-- | tests/test_build.py | 4 |
3 files changed, 9 insertions, 5 deletions
diff --git a/src/hydrilla/builder/build.py b/src/hydrilla/builder/build.py index 44f3dd9..89c1f5a 100644 --- a/src/hydrilla/builder/build.py +++ b/src/hydrilla/builder/build.py @@ -200,11 +200,13 @@ class Build: path = piggybacked.resolve_file(desired_path) if path is None: path = (self.srcdir / desired_path).resolve() - if not path.is_relative_to(self.srcdir): + try: + rel_path = path.relative_to(self.srcdir) + except ValueError: raise FileReferenceError(_('loading_{}_outside_package_dir') .format(filename)) - if str(path.relative_to(self.srcdir)) == 'index.json': + if str(rel_path) == 'index.json': raise FileReferenceError(_('loading_reserved_index_json')) else: include_in_source_archive = False diff --git a/src/hydrilla/builder/piggybacking.py b/src/hydrilla/builder/piggybacking.py index 7c03946..00186bc 100644 --- a/src/hydrilla/builder/piggybacking.py +++ b/src/hydrilla/builder/piggybacking.py @@ -98,7 +98,9 @@ class Piggybacked: path = path.resolve() - if not path.is_relative_to(root_path): + try: + path.relative_to(root_path) + except ValueError: raise FileReferenceError(_('loading_{}_outside_piggybacked_dir') .format(file_ref_name)) diff --git a/tests/test_build.py b/tests/test_build.py index a636488..8c204b9 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -281,7 +281,7 @@ def sample_source_change_index_json(monkeypatch, sample_source): @collect(variant_makers) def sample_source_add_comments(monkeypatch, sample_source): """Add index.json comments that should be preserved.""" - for dictionary in index_obj, *index_obj['definitions'], *expected: + for dictionary in (index_obj, *index_obj['definitions'], *expected): monkeypatch.setitem(dictionary, 'comment', 'index.json comment') @collect(variant_makers) @@ -356,7 +356,7 @@ def sample_source_add_extra_props(monkeypatch, sample_source): def sample_source_make_version_2(monkeypatch, sample_source, expected_documents_to_modify=[]): """Increase sources' schema version from 1 to 2.""" - for obj in index_obj, *expected_documents_to_modify: + for obj in (index_obj, *expected_documents_to_modify): monkeypatch.setitem(obj, '$schema', obj['$schema'].replace('1', '2')) permission_variant_makers = [] |