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')))