def test_wildcard(self): aliases = PathAliases() aliases.add('/ned/home/*/src', './mysrc') self.assertEqual(aliases.map('/ned/home/foo/src/a.py'), './mysrc/a.py') aliases = PathAliases() aliases.add('/ned/home/*/src/', './mysrc') self.assertEqual(aliases.map('/ned/home/foo/src/a.py'), './mysrc/a.py')
def test_paths_are_os_corrected(self): aliases = PathAliases() aliases.add('/home/ned/*/src', './mysrc') aliases.add(r'c:\ned\src', './mysrc') mapped = aliases.map(r'C:\Ned\src\sub\a.py') self.assertEqual(mapped, './mysrc/sub/a.py') aliases = PathAliases() aliases.add('/home/ned/*/src', r'.\mysrc') aliases.add(r'c:\ned\src', r'.\mysrc') mapped = aliases.map(r'/home/ned/foo/src/sub/a.py') self.assertEqual(mapped, r'.\mysrc\sub\a.py')
def test_dot(self): for d in ('.', '..', '../other', '~'): aliases = PathAliases() aliases.add(d, '/the/source') the_file = os.path.join(d, 'a.py') the_file = os.path.expanduser(the_file) the_file = os.path.abspath(os.path.realpath(the_file)) assert '~' not in the_file # to be sure the test is pure. self.assertEqual(aliases.map(the_file), '/the/source/a.py')
def coverage3x_combine(files, data): """ Combine all coverage files from @files into @data. Note: this works with coverage 3.6 (and possibly older) versions. """ aliases = PathAliases() for f in files: new_lines, new_arcs = data._read_file(f) for filename, file_data in iitems(new_lines): filename = aliases.map(filename) data.lines.setdefault(filename, {}).update(file_data) for filename, file_data in iitems(new_arcs): filename = aliases.map(filename) data.arcs.setdefault(filename, {}).update(file_data) return data
def test_no_accidental_munging(self): aliases = PathAliases() aliases.add(r'c:\Zoo\boo', 'src/') aliases.add('/home/ned$', 'src/') self.assertEqual(aliases.map(r'c:\Zoo\boo\foo.py'), 'src/foo.py') self.assertEqual(aliases.map(r'/home/ned$/foo.py'), 'src/foo.py')
def test_nomatch(self): aliases = PathAliases() aliases.add('/home/*/src', './mysrc') self.assertEqual(aliases.map('/home/foo/a.py'), '/home/foo/a.py')
def test_noop(self): aliases = PathAliases() self.assertEqual(aliases.map('/ned/home/a.py'), '/ned/home/a.py')
def test_leading_wildcard(self): aliases = PathAliases() aliases.add('*/d1', './mysrc1') aliases.add('*/d2', './mysrc2') self.assertEqual(aliases.map('/foo/bar/d1/x.py'), './mysrc1/x.py') self.assertEqual(aliases.map('/foo/bar/d2/y.py'), './mysrc2/y.py')
def test_no_accidental_match(self): aliases = PathAliases() aliases.add('/home/*/src', './mysrc') self.assertEqual(aliases.map('/home/foo/srcetc'), '/home/foo/srcetc')
def test_multiple_patterns(self): aliases = PathAliases() aliases.add('/home/*/src', './mysrc') aliases.add('/lib/*/libsrc', './mylib') self.assertEqual(aliases.map('/home/foo/src/a.py'), './mysrc/a.py') self.assertEqual(aliases.map('/lib/foo/libsrc/a.py'), './mylib/a.py')