def test_returns_two_empty_lists_if_file_is_not_present(self, _): patterns = IgnoreConfigManager.get_config() self.assertEqual( patterns, IgnoreConfigManager.get_patterns( io.StringIO(cli_constants.DEFAULT_IGNORE_LIST)), )
def test_whitelisted_lines(self, mock_file, _): configs = [ ("foo.c", "*.c"), (".c", "*.c"), ("foo/foo.c", "*.c"), ("foo/foo.c", "foo.c"), ("foo.c", "/*.c"), ("foo.c", "/foo.c"), ("foo.c", "foo.c"), ("foo.c", "foo.[ch]"), ("foo/bar/bla.c", "foo/**"), ("foo/bar/bla/blie.c", "foo/**/blie.c"), ("foo/bar/bla.c", "**/bla.c"), ("bla.c", "**/bla.c"), ("foo/bar", "foo/**/bar"), ("foo/bla/bar", "foo/**/bar"), ("foo/bar/", "bar/"), ("foo/bar/", "bar"), ("foo/bar/something", "foo/bar/*"), ] for (path, pattern) in configs: mock_file.return_value.__enter__.return_value = [pattern] patterns = IgnoreConfigManager.get_config() self.assertEqual( (self.get_ignored(patterns), self.get_whitelisted(patterns)), ([pattern], []), ) assert len(list(IgnoreConfigManager.find_matching(path, patterns))) == 1
def test_ignores_commented_lines(self, mock_file, _): file_data = ["", "# comment", "", "*.py"] mock_file.return_value.__enter__.return_value = file_data patterns = IgnoreConfigManager.get_config() self.assertEqual( (self.get_ignored(patterns), self.get_whitelisted(patterns)), (["*.py"], []))
def test_properly_interprets_whitelisted_globs(self, mock_file, _): file_data = ["", "# comment", "*.py", "!file1.py"] mock_file.return_value.__enter__.return_value = file_data patterns = IgnoreConfigManager.get_config() self.assertEqual( (self.get_ignored(patterns), self.get_whitelisted(patterns)), (["*.py"], ["file1.py"]), )
def test_trims_slash_prefix_from_abs_paths(self, mock_file, _): file_data = ["/test", "!/ignore"] mock_file.return_value.__enter__.return_value = file_data patterns = IgnoreConfigManager.get_config() self.assertEqual( (self.get_ignored(patterns), self.get_whitelisted(patterns)), (["/test"], ["/ignore"]), )
def test_escaping_of_globs_that_start_with_reserved_chars(self, mock_file, _): file_data = ["", r"# comment", r"\#file1", r"\!file2"] # noqa mock_file.return_value.__enter__.return_value = file_data patterns = IgnoreConfigManager.get_config() self.assertEqual( (self.get_ignored(patterns), self.get_whitelisted(patterns)), (["#file1", "!file2"], []), )
def test_ignored_lines(self, mock_file, _): configs = [ ("foo.c", "foo.[dh]"), ("foo/foo.c", "/foo.c"), ("foo/foo.c", "/*.c"), ("foo/bar/", "/bar/"), ("foo/bar/", "foo/bar/*"), ("foo/bar", "foo?bar"), ] for (path, pattern) in configs: mock_file.return_value.__enter__.return_value = [pattern] patterns = IgnoreConfigManager.get_config() self.assertEqual( (self.get_ignored(patterns), self.get_allowed(patterns)), ([pattern], []), ) assert list(IgnoreConfigManager.find_matching(path, patterns)) == []
def test_returns_two_empty_lists_if_file_is_not_present(self, _): patterns = IgnoreConfigManager.get_config() self.assertEqual(patterns, [])