summaryrefslogtreecommitdiffstats
path: root/tests/test_tools.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_tools.py')
-rw-r--r--tests/test_tools.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/test_tools.py b/tests/test_tools.py
new file mode 100644
index 0000000..55097e8
--- /dev/null
+++ b/tests/test_tools.py
@@ -0,0 +1,44 @@
+from tempfile import TemporaryDirectory
+import os
+import unittest
+
+from dhpython.tools import relpath, move_matching_files
+
+
+class TestRelpath(unittest.TestCase):
+ def test_common_parent_dir(self):
+ r = relpath('/usr/share/python-foo/foo.py', '/usr/bin/foo')
+ self.assertEqual(r, '../share/python-foo/foo.py')
+
+ def test_strips_common_prefix(self):
+ r = relpath('/usr/share/python-foo/foo.py', '/usr/share')
+ self.assertEqual(r, 'python-foo/foo.py')
+
+ def test_trailing_slash_ignored(self):
+ r = relpath('/usr/share/python-foo/foo.py', '/usr/share/')
+ self.assertEqual(r, 'python-foo/foo.py')
+
+
+class TestMoveMatchingFiles(unittest.TestCase):
+ def setUp(self):
+ self.tmpdir = TemporaryDirectory()
+ self.addCleanup(self.tmpdir.cleanup)
+ os.makedirs(self.tmppath('foo/bar/a/b/c/spam'))
+ for path in ('foo/bar/a/b/c/spam/file.so',
+ 'foo/bar/a/b/c/spam/file.py'):
+ open(self.tmppath(path), 'w').close()
+
+ move_matching_files(self.tmppath('foo/bar/'),
+ self.tmppath('foo/baz/'),
+ 'spam/.*\.so$')
+
+ def tmppath(self, *path):
+ return os.path.join(self.tmpdir.name, *path)
+
+ def test_moved_matching_file(self):
+ self.assertTrue(os.path.exists(
+ self.tmppath('foo/baz/a/b/c/spam/file.so')))
+
+ def test_left_non_matching_file(self):
+ self.assertTrue(os.path.exists(
+ self.tmppath('foo/bar/a/b/c/spam/file.py')))