#!/usr/bin/python3-dbg # -*- coding: utf-8 -*- # Tests minimalistes pour valider la construction de chemins relatifs et absolus. from chrysacase import ChrysalideTestCase from pychrysalide.common import pathname class TestPathNames(ChrysalideTestCase): """TestCase for common.pathname.build*""" @classmethod def setUpClass(cls): super(TestPathNames, cls).setUpClass() cls._tests = [ { 'ref' : '/a/b/d', 'target' : '/a/b/e/f', 'relative' : 'e/f' }, { 'ref' : '/a/b/c/d', 'target' : '/a/b/f', 'relative' : '../f' }, { 'ref' : '/a/b/c/d', 'target' : '/a/b/c/e', 'relative' : 'e' }, { 'ref' : '/a/bb/c/d', 'target' : '/a/b/e/f', 'relative' : '../../b/e/f' }, { 'ref' : '/a/b/c/d', 'target' : '/a/bb/e/f', 'relative' : '../../bb/e/f' }, { 'ref' : '/a/b/c/d', 'target' : '/f', 'relative' : '../../../f' }, { 'ref' : '/z/b/c/d', 'target' : '/a/b/e/f', 'relative' : '../../../a/b/e/f' }, { 'ref' : '/a/bbb/c/d', 'target' : '/a/bbc/e/f', 'relative' : '../../bbc/e/f' } ] def testBuildingRelative(self): """Build valid relative paths.""" build_relative = pathname.build_relative_filename for tst in self._tests: got = build_relative(tst['ref'], tst['target']) self.assertEqual(got, tst['relative']) def testBuildingAbsolute(self): """Build valid absolute paths.""" build_absolute = pathname.build_absolute_filename for tst in self._tests: got = build_absolute(tst['ref'], tst['relative']) self.assertEqual(got, tst['target']) def testBuildingWrongAbsolute(self): """Build invalid absolute paths.""" build_absolute = pathname.build_absolute_filename with self.assertRaisesRegex(Exception, 'Relative path is too deep.'): got = build_absolute('/a/b', '../../c')