blob: 078aae3c4d1108e2546b92a1d490fa59af287eaf [file] [log] [blame]
import unittest
from build.paths import getRealpath, get_repo_dirname
import os
from os import path
from tempfile import mkdtemp
import shutil
class TestgetRealpath(unittest.TestCase):
def setUp(self):
self.tempdir = mkdtemp()
def tearDown(self):
shutil.rmtree(self.tempdir)
def _createRegularFile(self, fileName):
full_path = path.join(self.tempdir, fileName)
dirname = path.dirname(full_path)
os.makedirs(dirname)
f = open(full_path, 'w')
f.close()
def testRegularFile(self):
fname = 'dir/file1.txt'
self._createRegularFile(fname)
self.assertEqual(fname, getRealpath(fname))
def testAbsSymlink(self):
fname = 'dir/file2.txt'
symlink = 'localconfig.py'
self._createRegularFile(fname)
os.symlink(path.join(self.tempdir, fname),
path.join(self.tempdir, symlink))
self.assertEqual(fname, getRealpath(symlink, cwd=self.tempdir))
def testRelativeSymlink(self):
fname = 'dir/file3.txt'
symlink = 'localconfig.py'
self._createRegularFile(fname)
os.symlink(fname, path.join(self.tempdir, symlink))
self.assertEqual(fname, getRealpath(symlink, cwd=self.tempdir))
def testAbsSymlinkToAbsSymlink(self):
fname = 'dir/file4.txt'
symlink1 = 'production.py'
symlink2 = 'localconfig.py'
self._createRegularFile(fname)
os.symlink(path.join(self.tempdir, fname),
path.join(self.tempdir, symlink1))
os.symlink(path.join(self.tempdir, symlink1),
path.join(self.tempdir, symlink2))
self.assertEqual(fname, getRealpath(symlink2, cwd=self.tempdir))
def testAbsSymlinkToRelativeSymlink(self):
fname = 'dir/file5.txt'
symlink1 = 'production.py'
symlink2 = 'localconfig.py'
self._createRegularFile(fname)
os.symlink(fname, path.join(self.tempdir, symlink1))
os.symlink(path.join(self.tempdir, symlink1),
path.join(self.tempdir, symlink2))
self.assertEqual(fname, getRealpath(symlink2, cwd=self.tempdir))
def testRelativeSymlinkToAbsSymlink(self):
fname = 'dir/file6.txt'
symlink1 = 'production.py'
symlink2 = 'localconfig.py'
self._createRegularFile(fname)
os.symlink(path.join(self.tempdir, fname),
path.join(self.tempdir, symlink1))
os.symlink(symlink1, path.join(self.tempdir, symlink2))
self.assertEqual(fname, getRealpath(symlink2, cwd=self.tempdir))
def testRelativeSymlinkToRelativeSymlink(self):
fname = 'dir/file7.txt'
symlink1 = 'production.py'
symlink2 = 'localconfig.py'
self._createRegularFile(fname)
os.symlink(fname, path.join(self.tempdir, symlink1))
os.symlink(symlink1, path.join(self.tempdir, symlink2))
self.assertEqual(fname, getRealpath(symlink2, cwd=self.tempdir))
def test3Levels(self):
fname = 'dir/file8.txt'
symlink1 = 'symlink1'
symlink2 = 'symlink2'
symlink3 = 'symlink3'
self._createRegularFile(fname)
os.symlink(fname, path.join(self.tempdir, symlink1))
os.symlink(symlink1, path.join(self.tempdir, symlink2))
os.symlink(symlink2, path.join(self.tempdir, symlink3))
self.assertEqual(fname, getRealpath(symlink3, cwd=self.tempdir))
def testDepth(self):
fname = 'dir1/dir2/dir3/file9.txt'
symlink1 = 'production.py'
symlink2 = 'localconfig.py'
self._createRegularFile(fname)
os.symlink(fname, path.join(self.tempdir, symlink1))
os.symlink(symlink1, path.join(self.tempdir, symlink2))
self.assertEqual(fname, getRealpath(symlink2, cwd=self.tempdir,
depth=3))
class TestGetRepoDirname(unittest.TestCase):
def test_regular(self):
self.assertEqual("repo", get_repo_dirname("path/repo"))
def test_trailing_slash(self):
self.assertEqual("repo", get_repo_dirname("path/repo/"))
def test_one_level(self):
self.assertEqual("repo", get_repo_dirname("repo"))
def test_one_level_with_slashes(self):
self.assertEqual("repo", get_repo_dirname("/repo/"))
def test_multiple_levels(self):
self.assertEqual("repo", get_repo_dirname("path//path2/repo"))