summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/test_collection.py17
-rw-r--r--tests/test_derivatives.py3
-rw-r--r--tests/utils.py18
3 files changed, 29 insertions, 9 deletions
diff --git a/tests/test_collection.py b/tests/test_collection.py
index 6a65ff3..4aa0dfe 100644
--- a/tests/test_collection.py
+++ b/tests/test_collection.py
@@ -8,12 +8,13 @@ import git
import ruamel.yaml
import lesana
+from . import utils
class testEntries(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp()
- shutil.copytree('tests/data/simple', self.tmpdir, dirs_exist_ok=True)
+ utils.copytree('tests/data/simple', self.tmpdir, dirs_exist_ok=True)
self.collection = lesana.Collection(self.tmpdir)
self.basepath = self.collection.itemdir
self.filenames = []
@@ -120,7 +121,7 @@ class testEntries(unittest.TestCase):
class testEmptyCollection(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp()
- shutil.copytree('tests/data/empty', self.tmpdir, dirs_exist_ok=True)
+ utils.copytree('tests/data/empty', self.tmpdir, dirs_exist_ok=True)
self.collection = lesana.Collection(self.tmpdir)
def tearDown(self):
@@ -136,7 +137,7 @@ class testEmptyCollection(unittest.TestCase):
class testSimpleCollection(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp()
- shutil.copytree('tests/data/simple', self.tmpdir, dirs_exist_ok=True)
+ utils.copytree('tests/data/simple', self.tmpdir, dirs_exist_ok=True)
self.collection = lesana.Collection(self.tmpdir)
def tearDown(self):
@@ -261,7 +262,7 @@ class testSimpleCollection(unittest.TestCase):
class testComplexCollection(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp()
- shutil.copytree('tests/data/complex', self.tmpdir, dirs_exist_ok=True)
+ utils.copytree('tests/data/complex', self.tmpdir, dirs_exist_ok=True)
self.collection = lesana.Collection(self.tmpdir)
def tearDown(self):
@@ -360,7 +361,7 @@ class testComplexCollection(unittest.TestCase):
class testCollectionWithErrors(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp()
- shutil.copytree('tests/data/wrong', self.tmpdir, dirs_exist_ok=True)
+ utils.copytree('tests/data/wrong', self.tmpdir, dirs_exist_ok=True)
self.collection = lesana.Collection(self.tmpdir)
def tearDown(self):
@@ -480,7 +481,7 @@ class testCollectionCreation(unittest.TestCase):
def test_deletion(self):
shutil.copy('tests/data/simple/settings.yaml', self.tmpdir)
- shutil.copytree(
+ utils.copytree(
'tests/data/simple/items', os.path.join(self.tmpdir, 'items'),
)
collection = lesana.Collection.init(self.tmpdir)
@@ -506,7 +507,7 @@ class testCollectionCreation(unittest.TestCase):
def test_partial_eid_deletion(self):
shutil.copy('tests/data/simple/settings.yaml', self.tmpdir)
- shutil.copytree(
+ utils.copytree(
'tests/data/simple/items', os.path.join(self.tmpdir, 'items'),
)
collection = lesana.Collection.init(self.tmpdir)
@@ -540,7 +541,7 @@ class testCollectionCreation(unittest.TestCase):
def test_git_adding(self):
shutil.copy('tests/data/simple/settings.yaml', self.tmpdir)
- shutil.copytree(
+ utils.copytree(
'tests/data/simple/items', os.path.join(self.tmpdir, 'items'),
)
collection = lesana.Collection.init(self.tmpdir)
diff --git a/tests/test_derivatives.py b/tests/test_derivatives.py
index f79123c..0218f3d 100644
--- a/tests/test_derivatives.py
+++ b/tests/test_derivatives.py
@@ -4,6 +4,7 @@ import unittest
import lesana
from lesana import types
+from . import utils
class DerivedType(types.LesanaString):
@@ -22,7 +23,7 @@ class Derivative(lesana.Collection):
class testDerivatives(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp()
- shutil.copytree(
+ utils.copytree(
'tests/data/derivative',
self.tmpdir,
dirs_exist_ok=True
diff --git a/tests/utils.py b/tests/utils.py
new file mode 100644
index 0000000..a56a120
--- /dev/null
+++ b/tests/utils.py
@@ -0,0 +1,18 @@
+import shutil
+import sys
+
+
+def copytree(src, dest, dirs_exist_ok=False):
+ """
+ Helper function to remove existing directories
+
+ Used in the tests for compatibility with python < 3.8
+ """
+ if sys.version_info >= (3, 8):
+ shutil.copytree(src, dest, dirs_exist_ok=dirs_exist_ok)
+ else:
+ if dirs_exist_ok:
+ if not dest.startswith('/tmp'):
+ raise ValueError("Refusing to delete a directory outside /tmp")
+ shutil.rmtree(dest)
+ shutil.copytree(src, dest)