diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/test_data.py | 29 | ||||
-rw-r--r-- | test/test_files.py | 60 |
2 files changed, 86 insertions, 3 deletions
diff --git a/test/test_data.py b/test/test_data.py index 298078a2..5d0d400f 100644 --- a/test/test_data.py +++ b/test/test_data.py @@ -4,6 +4,7 @@ import os, sys from coverage.backward import pickle from coverage.data import CoverageData +from coverage.files import PathAliases sys.path.insert(0, os.path.split(__file__)[0]) # Force relative import for Py3k from coveragetest import CoverageTest @@ -23,12 +24,13 @@ ARC_DATA_3 = { 'x.py': {(1,2):None, (2,3):None}, 'y.py': {(17,23):None} } X_PY_ARCS_3 = [(1,2), (2,3)] Y_PY_ARCS_3 = [(17,23)] + class DataTest(CoverageTest): """Test cases for coverage.data.""" - def assert_summary(self, covdata, summary): + def assert_summary(self, covdata, summary, fullpath=False): """Check that the summary of `covdata` is `summary`.""" - self.assertEqual(covdata.summary(), summary) + self.assertEqual(covdata.summary(fullpath), summary) def assert_measured_files(self, covdata, measured): """Check that `covdata`'s measured files are `measured`.""" @@ -120,3 +122,26 @@ class DataTest(CoverageTest): arcs = data['arcs'] self.assertSameElements(arcs['x.py'], X_PY_ARCS_3) self.assertSameElements(arcs['y.py'], Y_PY_ARCS_3) + + def test_combining_with_aliases(self): + covdata1 = CoverageData() + covdata1.add_line_data({ + '/home/ned/proj/src/a.py': {1:None, 2:None}, + '/home/ned/proj/src/sub/b.py': {3:None}, + }) + covdata1.write(suffix='1') + + covdata2 = CoverageData() + covdata2.add_line_data({ + r'c:\ned\test\a.py': {4:None, 5:None}, + r'c:\ned\test\sub\b.py': {6:None}, + }) + covdata2.write(suffix='2') + + covdata3 = CoverageData() + aliases = PathAliases() + aliases.add("/home/ned/proj/src/", "./") + aliases.add(r"c:\ned\test", "./") + covdata3.combine_parallel_data(aliases=aliases) + self.assert_summary(covdata3, { './a.py':4, './sub/b.py':2 }, fullpath=True) + self.assert_measured_files(covdata3, [ './a.py', './sub/b.py' ]) diff --git a/test/test_files.py b/test/test_files.py index 9cbaf9c4..4673add3 100644 --- a/test/test_files.py +++ b/test/test_files.py @@ -3,8 +3,9 @@ import os, sys from coverage.files import FileLocator, TreeMatcher, FnmatchMatcher -from coverage.files import find_python_files +from coverage.files import PathAliases, find_python_files from coverage.backward import set # pylint: disable=W0622 +from coverage.misc import CoverageException sys.path.insert(0, os.path.split(__file__)[0]) # Force relative import for Py3k from coveragetest import CoverageTest @@ -72,6 +73,63 @@ class MatcherTest(CoverageTest): self.assertFalse(fnm.match(fl.canonical_filename(file5))) +class PathAliasesTest(CoverageTest): + def test_noop(self): + aliases = PathAliases() + self.assertEqual(aliases.map('/ned/home/a.py'), '/ned/home/a.py') + + def test_nomatch(self): + aliases = PathAliases() + aliases.add('/ned/home/*/src', './mysrc') + self.assertEqual(aliases.map('/ned/home/foo/a.py'), '/ned/home/foo/a.py') + + 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_no_accidental_match(self): + aliases = PathAliases() + aliases.add('/ned/home/*/src', './mysrc') + self.assertEqual(aliases.map('/ned/home/foo/srcetc'), '/ned/home/foo/srcetc') + + def test_multiple_patterns(self): + aliases = PathAliases() + aliases.add('/ned/home/*/src', './mysrc') + aliases.add('/ned/lib/*/libsrc', './mylib') + self.assertEqual(aliases.map('/ned/home/foo/src/a.py'), './mysrc/a.py') + self.assertEqual(aliases.map('/ned/lib/foo/libsrc/a.py'), './mylib/a.py') + + def test_cant_have_wildcard_at_end(self): + aliases = PathAliases() + self.assertRaisesRegexp( + CoverageException, "Pattern must not end with wildcards.", + aliases.add, "/ned/home/*", "fooey" + ) + self.assertRaisesRegexp( + CoverageException, "Pattern must not end with wildcards.", + aliases.add, "/ned/home/*/", "fooey" + ) + self.assertRaisesRegexp( + CoverageException, "Pattern must not end with wildcards.", + aliases.add, "/ned/home/*/*/", "fooey" + ) + + def test_paths_are_os_corrected(self): + aliases = PathAliases() + aliases.add('/ned/home/*/src', './mysrc') + aliases.add(r'c:\ned\foo\src', './mysrc') + self.assertEqual(aliases.map(r'C:\Ned\foo\src\sub\a.py'), './mysrc/sub/a.py') + + aliases = PathAliases() + aliases.add('/ned/home/*/src', r'.\mysrc') + aliases.add(r'c:\ned\foo\src', r'.\mysrc') + self.assertEqual(aliases.map(r'/ned/home/foo/src/sub/a.py'), r'.\mysrc\sub\a.py') + + class FindPythonFilesTest(CoverageTest): """Tests of `find_python_files`.""" |