• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

martineberlein / debugging-benchmark / 7871525981

12 Feb 2024 12:12PM UTC coverage: 78.462% (-4.1%) from 82.589%
7871525981

Pull #24

github

web-flow
Merge 0cb8af6f2 into 6fd8a32ca
Pull Request #24: Dev

1 of 1 new or added line in 1 file covered. (100.0%)

27 existing lines in 1 file now uncovered.

510 of 650 relevant lines covered (78.46%)

0.78 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

37.78
/test/test_tests4py.py
1
import unittest
1✔
2
from typing import Union, List
1✔
3

4
from fuzzingbook.GrammarFuzzer import GrammarFuzzer, is_valid_grammar
1✔
5
from fuzzingbook.Parser import EarleyParser, tree_to_string
1✔
6

7
from debugging_framework.oracle import OracleResult
1✔
8
from debugging_framework.benchmark import BenchmarkProgram
1✔
9
from debugging_benchmark.tests4py_benchmark import (
1✔
10
    PysnooperBenchmarkRepository,
11
    # YoutubeDLBenchmarkRepository,
12
    CookieCutterBenchmarkRepository,
13
    FastAPIBenchmarkRepository,
14
    ToyExampleTests4PyBenchmarkRepository,
15
)
16
                                                            
17

18
@unittest.skip
1✔
19
class TestTests4Py(unittest.TestCase):
1✔
20
    subjects: List[BenchmarkProgram]
1✔
21

22
    @classmethod
1✔
23
    def setUpClass(cls):
1✔
UNCOV
24
        repositories = [
×
25
            PysnooperBenchmarkRepository(),
26
            CookieCutterBenchmarkRepository(),
27
            # ToyExampleTests4PyBenchmarkRepository(),
28
            # YoutubeDLBenchmarkRepository(),
29
            # FastAPIBenchmarkRepository()
30
        ]
UNCOV
31
        cls.subjects = []
×
UNCOV
32
        for repo in repositories:
×
UNCOV
33
            subjects = repo.build()
×
UNCOV
34
            for subject in subjects:
×
UNCOV
35
                cls.subjects.append(subject)
×
36

37
    def test_tests4py_valid_grammars(self):
1✔
UNCOV
38
        for subject in self.subjects:
×
UNCOV
39
            self.assertTrue(is_valid_grammar(subject.grammar))
×
40

41
    def test_tests4py_initial_inputs_parsing(self):
1✔
UNCOV
42
        for subject in self.subjects:
×
UNCOV
43
            parser = EarleyParser(subject.grammar)
×
UNCOV
44
            for inp in subject.initial_inputs:
×
UNCOV
45
                for tree in parser.parse(inp):
×
UNCOV
46
                    self.assertEqual(inp, tree_to_string(tree))
×
47

48
    def test_tests4py_input_generation(self):
1✔
UNCOV
49
        for subject in self.subjects:
×
UNCOV
50
            fuzzer = GrammarFuzzer(subject.grammar)
×
UNCOV
51
            print(subject.name)
×
UNCOV
52
            for _ in range(10):
×
UNCOV
53
                inp = fuzzer.fuzz()
×
UNCOV
54
                oracle, exception = subject.oracle(inp)
×
UNCOV
55
                self.assertIsInstance(oracle, OracleResult)
×
UNCOV
56
                self.assertIsInstance(exception, Union[Exception, None])
×
57

58
    def test_tests4py_verify_oracle(self):
1✔
UNCOV
59
        for subject in self.subjects:
×
UNCOV
60
            for inp in subject.initial_inputs:
×
UNCOV
61
                oracle, exception = subject.oracle(inp)
×
UNCOV
62
                self.assertIsInstance(oracle, OracleResult)
×
UNCOV
63
                self.assertTrue(oracle != OracleResult.UNDEFINED)
×
UNCOV
64
                self.assertIsInstance(exception, Union[Exception, None])
×
65

66

67
if __name__ == "__main__":
1✔
68
    unittest.main()
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc