def test_is_subdir(self): self.assertTrue(is_subdir('/profile/blog', '/profile/blog/123')) self.assertTrue(is_subdir('/profile/blog/', '/profile/blog/123')) self.assertFalse(is_subdir('/profile/blog', '/profile/photo')) self.assertTrue(is_subdir('/profile/blog', '/profile/blog/123', trailing_slash=True)) self.assertTrue(is_subdir('/profile/blog/', '/profile/blog/123', trailing_slash=True)) self.assertFalse(is_subdir('/profile/blog/', '/profile/photo', trailing_slash=True)) self.assertTrue(is_subdir('/profile/blog', '/profile/photo', trailing_slash=True)) self.assertTrue(is_subdir('/profile/blog-*-', '/profile/blog-1-/', wildcards=True)) self.assertFalse(is_subdir('/profile/blog-*-', '/profile/blog/', wildcards=True)) self.assertFalse(is_subdir('/profile/blog-*-', '/profile/', wildcards=True))
def test(self, url_info, url_table_record): if url_table_record.inline_level: return True if url_table_record.root_url: top_url_info = URLInfo.parse(url_table_record.root_url) else: top_url_info = url_info if schemes_similar(url_info.scheme, top_url_info.scheme) \ and url_info.hostname == top_url_info.hostname \ and ( url_info.scheme != top_url_info.scheme or url_info.port == top_url_info.port ): return is_subdir(top_url_info.path, url_info.path, trailing_slash=True) return True
def _is_rejected(self, url_info): for dirname in self._rejected: if is_subdir(dirname, url_info.path, wildcards=True): return True