Merge pull request #1183 from Rogdham/pelican-fixcopy

Fix `utils.copy` for copying files
This commit is contained in:
Justin Mayer 2014-02-05 08:19:34 -08:00
commit dcadf33988
3 changed files with 97 additions and 15 deletions

View file

@ -323,6 +323,87 @@ class TestUtils(LoggedTestCase):
locale.setlocale(locale.LC_TIME, old_locale)
class TestCopy(unittest.TestCase):
'''Tests the copy utility'''
def setUp(self):
self.root_dir = mkdtemp(prefix='pelicantests.')
def tearDown(self):
shutil.rmtree(self.root_dir)
def _create_file(self, *path):
with open(os.path.join(self.root_dir, *path), 'w') as f:
f.write('42\n')
def _create_dir(self, *path):
os.makedirs(os.path.join(self.root_dir, *path))
def _exist_file(self, *path):
path = os.path.join(self.root_dir, *path)
self.assertTrue(os.path.isfile(path), 'File does not exist: %s' % path)
def _exist_dir(self, *path):
path = os.path.join(self.root_dir, *path)
self.assertTrue(os.path.exists(path),
'Directory does not exist: %s' % path)
def test_copy_file_same_path(self):
self._create_file('a.txt')
utils.copy(os.path.join(self.root_dir, 'a.txt'),
os.path.join(self.root_dir, 'b.txt'))
self._exist_file('b.txt')
def test_copy_file_different_path(self):
self._create_dir('a')
self._create_dir('b')
self._create_file('a', 'a.txt')
utils.copy(os.path.join(self.root_dir, 'a', 'a.txt'),
os.path.join(self.root_dir, 'b', 'b.txt'))
self._exist_dir('b')
self._exist_file('b', 'b.txt')
def test_copy_file_create_dirs(self):
self._create_file('a.txt')
utils.copy(os.path.join(self.root_dir, 'a.txt'),
os.path.join(self.root_dir, 'b0', 'b1', 'b2', 'b3', 'b.txt'))
self._exist_dir('b0')
self._exist_dir('b0', 'b1')
self._exist_dir('b0', 'b1', 'b2')
self._exist_dir('b0', 'b1', 'b2', 'b3')
self._exist_file('b0', 'b1', 'b2', 'b3', 'b.txt')
def test_copy_dir_same_path(self):
self._create_dir('a')
self._create_file('a', 'a.txt')
utils.copy(os.path.join(self.root_dir, 'a'),
os.path.join(self.root_dir, 'b'))
self._exist_dir('b')
self._exist_file('b', 'a.txt')
def test_copy_dir_different_path(self):
self._create_dir('a0')
self._create_dir('a0', 'a1')
self._create_file('a0', 'a1', 'a.txt')
self._create_dir('b0')
utils.copy(os.path.join(self.root_dir, 'a0', 'a1'),
os.path.join(self.root_dir, 'b0', 'b1'))
self._exist_dir('b0', 'b1')
self._exist_file('b0', 'b1', 'a.txt')
def test_copy_dir_create_dirs(self):
self._create_dir('a')
self._create_file('a', 'a.txt')
utils.copy(os.path.join(self.root_dir, 'a'),
os.path.join(self.root_dir, 'b0', 'b1', 'b2', 'b3', 'b'))
self._exist_dir('b0')
self._exist_dir('b0', 'b1')
self._exist_dir('b0', 'b1', 'b2')
self._exist_dir('b0', 'b1', 'b2', 'b3')
self._exist_dir('b0', 'b1', 'b2', 'b3', 'b')
self._exist_file('b0', 'b1', 'b2', 'b3', 'b', 'a.txt')
class TestDateFormatter(unittest.TestCase):
'''Tests that the output of DateFormatter jinja filter is same as
utils.strftime'''