diff --git a/linkcheck/checker/fileurl.py b/linkcheck/checker/fileurl.py index adc7905c..c23d98f3 100644 --- a/linkcheck/checker/fileurl.py +++ b/linkcheck/checker/fileurl.py @@ -266,6 +266,12 @@ class FileUrl (urlbase.UrlBase): @return non-empty regex pattern or None @rtype String or None """ - if not self.url: + url = self.url + if not url: return None - return re.escape(self.url) + if url.startswith('file://'): + i = url.rindex('/') + if i > 6: + # remove last filename to make directory internal + url = url[:i+1] + return re.escape(url) diff --git a/tests/checker/data/a b/bl.html b/tests/checker/data/a b/bl.html new file mode 100644 index 00000000..0765d830 --- /dev/null +++ b/tests/checker/data/a b/bl.html @@ -0,0 +1,3 @@ +Broken link +Broken link target +External link diff --git a/tests/checker/data/a b/el.html b/tests/checker/data/a b/el.html new file mode 100644 index 00000000..82d3502f --- /dev/null +++ b/tests/checker/data/a b/el.html @@ -0,0 +1,2 @@ +Broken link +Broken link target diff --git a/tests/checker/test_file.py b/tests/checker/test_file.py index 45a45d71..ee897106 100644 --- a/tests/checker/test_file.py +++ b/tests/checker/test_file.py @@ -131,17 +131,31 @@ class TestFile (LinkCheckTest): self.direct(url, resultlines) def test_good_dir_space (self): - url = u"file://%(curdir)s/%(datadir)s/a b/" % self.get_attrs() + url = u"file://%(curdir)s/%(datadir)s/a b/bl.html" % self.get_attrs() nurl = self.norm(url) + url2 = u"file://%(curdir)s/%(datadir)s/a b/el.html" % self.get_attrs() + nurl2 = self.norm(url2) resultlines = [ u"url %s" % url, u"cache key %s" % nurl, u"real url %s" % nurl, u"valid", - u"url t.txt", - u"cache key %st.txt" % nurl, - u"real url %st.txt" % nurl, - u"name t.txt", + u"url bl.html#bl", + u"cache key %s" % nurl, + u"real url %s" % nurl, + u"name Broken link", + u"warning Anchor `bl' not found. Available anchors: `BL'.", + u"valid", + u"url el.html", + u"cache key %s" % nurl2, + u"real url %s" % nurl2, + u"name External link", + u"valid", + u"url #bl", + u"cache key %s" % nurl2, + u"real url %s" % nurl2, + u"name Broken link", + u"warning Anchor `bl' not found. Available anchors: `BL'.", u"valid", ] - self.direct(url, resultlines, recursionlevel=1) + self.direct(url, resultlines, recursionlevel=2)