예제 #1
0
파일: lib50_tests.py 프로젝트: cs50/lib50
    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"})
예제 #2
0
파일: lib50_tests.py 프로젝트: cs50/lib50
    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"})
예제 #3
0
파일: lib50_tests.py 프로젝트: cs50/lib50
    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"))
예제 #4
0
파일: lib50_tests.py 프로젝트: cs50/lib50
    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())
예제 #5
0
파일: lib50_tests.py 프로젝트: cs50/lib50
    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"))
예제 #6
0
파일: lib50_tests.py 프로젝트: cs50/lib50
    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"})
예제 #7
0
파일: lib50_tests.py 프로젝트: cs50/lib50
    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())
예제 #8
0
파일: lib50_tests.py 프로젝트: cs50/lib50
    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"})
예제 #9
0
파일: lib50_tests.py 프로젝트: cs50/lib50
    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())
예제 #10
0
파일: lib50_tests.py 프로젝트: cs50/lib50
    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"})