def test_implicit_recursive(self): os.mkdir("foo") open("foo/bar.py", "w").close() open("qux.py", "w").close() content = \ "check50:\n" \ " files:\n" \ " - !exclude \"*.py\"\n" config = self.loader.load(content) included, excluded = lib50.files(config.get("files")) self.assertEqual(set(included), set()) self.assertEqual(set(excluded), {"qux.py", "foo/bar.py"}) content = \ "check50:\n" \ " files:\n" \ " - !exclude \"./*.py\"\n" config = self.loader.load(content) included, excluded = lib50.files(config.get("files")) self.assertEqual(set(included), {"foo/bar.py"}) self.assertEqual(set(excluded), {"qux.py"})
def test_exclude_all(self): content = \ "check50:\n" \ " files:\n" \ " - !exclude \"*\"\n" config = self.loader.load(content) included, excluded = lib50.files(config.get("files")) self.assertEqual(included, set()) self.assertEqual(excluded, set()) open("foo.py", "w").close() included, excluded = lib50.files(config.get("files")) self.assertEqual(set(included), set()) self.assertEqual(set(excluded), {"foo.py"})
def test_requires_no_exclude(self): content = \ "check50:\n" \ " files:\n" \ " - !require does_not_exist.py\n" config = self.loader.load(content) with self.assertRaises(lib50.MissingFilesError): lib50.files(config.get("files"))
def test_required(self): content = \ "check50:\n" \ " files:\n" \ " - !require foo.py\n" config = self.loader.load(content) open("foo.py", "w").close() included, excluded = lib50.files(config.get("files")) self.assertEqual(set(included), {"foo.py"}) self.assertEqual(set(excluded), set()) open("bar.c", "w").close() included, excluded = lib50.files(config.get("files")) self.assertEqual(set(included), {"foo.py", "bar.c"}) self.assertEqual(set(excluded), set())
def test_non_file_require(self): open("foo.py", "w").close() content = \ "check50:\n" \ " files:\n" \ " - !require \"*.py\"\n" config = self.loader.load(content) with self.assertRaises(lib50.MissingFilesError): included, excluded = lib50.files(config.get("files"))
def test_exclude_only_one(self): content = \ "check50:\n" \ " files:\n" \ " - !exclude foo.py\n" config = self.loader.load(content) open("foo.py", "w").close() open("bar.py", "w").close() included, excluded = lib50.files(config.get("files")) self.assertEqual(set(included), {"bar.py"}) self.assertEqual(set(excluded), {"foo.py"})
def test_exclude_everything_include_folder(self): content = \ "check50:\n" \ " files:\n" \ " - !exclude \"*\"\n" \ " - !include foo\n" config = self.loader.load(content) os.mkdir("foo") open("foo/bar.py", "w").close() included, excluded = lib50.files(config.get("files")) self.assertEqual(set(included), {"foo/bar.py"}) self.assertEqual(set(excluded), set())
def test_implicit_recursive_with_slash(self): content = \ "check50:\n" \ " files:\n" \ " - !exclude \"*/*.py\"\n" config = self.loader.load(content) os.mkdir("foo") os.mkdir("foo/bar") open("foo/bar/baz.py", "w").close() open("foo/qux.py", "w").close() included, excluded = lib50.files(config.get("files")) self.assertEqual(set(included), {"foo/bar/baz.py"}) self.assertEqual(set(excluded), {"foo/qux.py"})
def test_no_tags(self): open("foo.py", "w").close() open("bar.py", "w").close() open("baz.py", "w").close() content = \ "check50:\n" \ " files:\n" \ " - !include \"foo.py\"\n" \ " - !exclude \"bar.py\"\n" \ " - !require \"baz.py\"\n" config = self.loader.load(content) included, excluded = lib50.files(config.get("files"), exclude_tags=[], include_tags=[], require_tags=[]) self.assertEqual(included, {"foo.py", "bar.py", "baz.py"}) self.assertEqual(excluded, set())
def test_custom_tags(self): open("foo.py", "w").close() open("bar.py", "w").close() open("baz.py", "w").close() content = \ "foo50:\n" \ " files:\n" \ " - !open \"foo.py\"\n" \ " - !close \"bar.py\"\n" \ " - !exclude \"baz.py\"\n" loader = lib50.config.Loader("foo50") loader.scope("files", "open", "close", "exclude") config = loader.load(content) included, excluded = lib50.files(config.get("files"), exclude_tags=["exclude"], include_tags=[""], require_tags=["open", "close"]) self.assertEqual(included, {"foo.py", "bar.py"}) self.assertEqual(excluded, {"baz.py"})