Exemple #1
0
    def setUp(self):
        super().setUp()
        self.content = "def bar():\n"\
                       "    print('qux')\n"

        with open("foo.py", "w") as f:
            f.write(self.content)

        self.file = data.Submission(".", ["foo.py"]).files[0]
Exemple #2
0
    def test_first_span_missing(self):
        missing_tokens = []

        def preprocessor(tokens):
            missing_tokens.append(tokens[0])
            return tokens[1:]

        self.file = data.Submission(".", ["foo.py"],
                                    preprocessor=preprocessor).files[0]
        spans = api.missing_spans(self.file)
        resulting_span = self.span(0, missing_tokens[0].end)
        self.assertEqual(spans, [resulting_span])
Exemple #3
0
    def test_last_span_missing(self):
        missing_tokens = []

        def preprocessor(tokens):
            missing_tokens.append(tokens[-1])
            return tokens[:-1]

        self.file = data.Submission(".", ["foo.py"],
                                    preprocessor=preprocessor).files[0]
        spans = api.missing_spans(self.file)
        resulting_span = self.span(missing_tokens[0].start, len(self.content))
        self.assertEqual(spans, [resulting_span])
Exemple #4
0
    def setUp(self):
        self.working_directory = tempfile.TemporaryDirectory()
        self._wd = os.getcwd()
        os.chdir(self.working_directory.name)

        self.content = "def bar():\n"\
                       "    print('qux')\n"

        with open("foo.py", "w") as f:
            f.write(self.content)

        self.file = data.Submission(".", ["foo.py"]).files[0]
Exemple #5
0
    def test_middle_span_missing(self):
        missing_tokens = []

        def preprocessor(tokens):
            middle = len(tokens) // 2
            missing_tokens.append(tokens[middle])
            return tokens[:middle] + tokens[middle + 1:]

        self.file = data.Submission(".", ["foo.py"],
                                    preprocessor=preprocessor).files[0]
        spans = api.missing_spans(self.file)
        resulting_span = self.span(missing_tokens[0].start,
                                   missing_tokens[0].end)
        self.assertEqual(spans, [resulting_span])
Exemple #6
0
    def test_ignore_half(self):
        ignore_content = self.content.split("\n")[0]
        with open("ignore.py", "w") as f:
            f.write(ignore_content)
        ignored_file = data.Submission(".", ["ignore.py"]).files[0]
        ignored_index = winnowing.CompareIndex(k=2)
        ignored_index.include(ignored_file)

        relevant_token_lists = ignored_index.unignored_tokens(self.file)

        end = list(ignored_file.tokens())[-1].end
        expected_tokens = [t for t in self.file.tokens() if t.start >= end]

        self.assertEqual(len(relevant_token_lists), 1)
        self.assertEqual(relevant_token_lists[0], expected_tokens)
Exemple #7
0
 def span(self, start, end):
     file = data.Submission(".", ["bar/foo"]).files[0]
     return data.Span(file, start, end)
Exemple #8
0
 def test_all_spans_missing(self):
     self.file = data.Submission(".", ["foo.py"],
                                 preprocessor=lambda tokens: []).files[0]
     resulting_span = self.span(0, len(self.content))
     spans = api.missing_spans(self.file)
     self.assertEqual(spans, [resulting_span])