mirror of https://github.com/tLDP/python-tldp
62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
|
|
from __future__ import absolute_import, division, print_function
|
|
|
|
import os
|
|
import unittest
|
|
from tempfile import mkdtemp
|
|
import shutil
|
|
|
|
|
|
def stem_and_ext(name):
|
|
stem, ext = os.path.splitext(os.path.basename(name))
|
|
assert ext != ''
|
|
return stem, ext
|
|
|
|
|
|
def dir_to_components(reldir):
|
|
reldir, basename = os.path.split(os.path.normpath(reldir))
|
|
components = [basename]
|
|
while reldir != '':
|
|
reldir, basename = os.path.split(reldir)
|
|
components.append(basename)
|
|
assert len(components) >= 1
|
|
components.reverse()
|
|
return components
|
|
|
|
|
|
class TestToolsFilesystem(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.tempdir = mkdtemp(prefix='tldp-test-')
|
|
|
|
def tearDown(self):
|
|
shutil.rmtree(self.tempdir)
|
|
|
|
def adddir(self, reldir):
|
|
components = dir_to_components(reldir)
|
|
absdir = self.tempdir
|
|
while components:
|
|
absdir = os.path.join(absdir, components.pop(0))
|
|
if not os.path.isdir(absdir):
|
|
os.mkdir(absdir)
|
|
self.assertTrue(os.path.isdir(absdir))
|
|
relpath = os.path.relpath(absdir, self.tempdir)
|
|
return relpath, absdir
|
|
|
|
def addfile(self, reldir, filename, stem=None, ext=None):
|
|
if stem is None:
|
|
stem, _ = stem_and_ext(filename)
|
|
if ext is None:
|
|
_, ext = stem_and_ext(filename)
|
|
newname = os.path.join(self.tempdir, reldir, stem + ext)
|
|
if os.path.isfile(filename):
|
|
shutil.copy(filename, newname)
|
|
else:
|
|
with open(newname):
|
|
pass
|
|
relname = os.path.relpath(newname, self.tempdir)
|
|
return relname, newname
|
|
|
|
#
|
|
# -- end of file
|