From 50c7d92f2a06a51b7acbfee88970d3684acd8ef4 Mon Sep 17 00:00:00 2001 From: Eric Torres Date: Sat, 30 Mar 2019 14:22:46 -0700 Subject: [PATCH] Raise ValueError when snapshot name contains a '/' --- rbackup/hierarchy/repository.py | 4 ++++ rbackup/tests/test_repository.py | 10 +++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/rbackup/hierarchy/repository.py b/rbackup/hierarchy/repository.py index 0178071..fbe5206 100644 --- a/rbackup/hierarchy/repository.py +++ b/rbackup/hierarchy/repository.py @@ -146,7 +146,11 @@ class Repository(Hierarchy): :param name: name of the Snapshot :type name: str or path-like object :rtype: path-like object + :raises: ValueError if name contains slashes """ + if "/" in str(name): + raise ValueError("Names cannot contain slashes") + return self.snapshot_dir / name @property diff --git a/rbackup/tests/test_repository.py b/rbackup/tests/test_repository.py index 11c5756..5126527 100644 --- a/rbackup/tests/test_repository.py +++ b/rbackup/tests/test_repository.py @@ -50,10 +50,14 @@ class TestRepositoryPreCreate(unittest.TestCase): } repo = Repository("backup") - snapshot_path = repo.gen_snapshot_path(name) - self.assertEqual(snapshot_path, Path(f"backup/data/{name}")) - self.assertIsInstance(snapshot_path, Path) + if "/" not in name: + snapshot_path = repo.gen_snapshot_path(name) + self.assertEqual(snapshot_path, Path(f"backup/data/{name}")) + self.assertIsInstance(snapshot_path, Path) + else: + with self.assertRaises(ValueError): + snapshot_path = repo.gen_snapshot_path(name) @given(lists(builds(Snapshot, text()), unique=True)) def test_empty(self, l):