summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coverage/data.py3
-rw-r--r--coverage/files.py6
-rw-r--r--test/test_data.py4
-rw-r--r--test/test_files.py32
4 files changed, 26 insertions, 19 deletions
diff --git a/coverage/data.py b/coverage/data.py
index 1cc4c950..1d6799f0 100644
--- a/coverage/data.py
+++ b/coverage/data.py
@@ -1,10 +1,9 @@
"""Coverage data for Coverage."""
-import fnmatch, os, re
+import os
from coverage.backward import pickle, sorted # pylint: disable=W0622
from coverage.files import PathAliases
-from coverage.misc import CoverageException
class CoverageData(object):
diff --git a/coverage/files.py b/coverage/files.py
index f1046ed1..23f1bdef 100644
--- a/coverage/files.py
+++ b/coverage/files.py
@@ -162,9 +162,11 @@ class PathAliases(object):
pattern_sep = self._sep(pattern)
pattern += pattern_sep
- # Make a regex from the pattern. fnmatch always adds a \Z to match
- # the whole string, which we don't want.
+ # Make a regex from the pattern. fnmatch always adds a \Z or $ to
+ # match the whole string, which we don't want.
regex_pat = fnmatch.translate(pattern).replace(r'\Z', '')
+ if regex_pat.endswith("$"):
+ regex_pat = regex_pat[:-1]
regex = re.compile("(?i)" + regex_pat)
# Normalize the result: it must end with a path separator.
diff --git a/test/test_data.py b/test/test_data.py
index 5d0d400f..5ad2f440 100644
--- a/test/test_data.py
+++ b/test/test_data.py
@@ -143,5 +143,7 @@ class DataTest(CoverageTest):
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_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 4673add3..2f26c7b5 100644
--- a/test/test_files.py
+++ b/test/test_files.py
@@ -74,14 +74,16 @@ class MatcherTest(CoverageTest):
class PathAliasesTest(CoverageTest):
+ """Tests for coverage/files.py:PathAliases"""
+
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')
+ aliases.add('/home/*/src', './mysrc')
+ self.assertEqual(aliases.map('/home/foo/a.py'), '/home/foo/a.py')
def test_wildcard(self):
aliases = PathAliases()
@@ -93,15 +95,15 @@ class PathAliasesTest(CoverageTest):
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')
+ aliases.add('/home/*/src', './mysrc')
+ self.assertEqual(aliases.map('/home/foo/srcetc'), '/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')
+ 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')
def test_cant_have_wildcard_at_end(self):
aliases = PathAliases()
@@ -120,14 +122,16 @@ class PathAliasesTest(CoverageTest):
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.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('/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')
+ 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')
class FindPythonFilesTest(CoverageTest):