Coverage for /pythoncovmergedfiles/medio/medio/src/fuzz_rst.py: 64%
58 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:06 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:06 +0000
1###### Coverage stub
2import atexit
3import coverage
4cov = coverage.coverage(data_file='.coverage', cover_pylib=True)
5cov.start()
6# Register an exist handler that will print coverage
7def exit_handler():
8 cov.stop()
9 cov.save()
10atexit.register(exit_handler)
11####### End of coverage stub
12#!/usr/bin/python3
13# Copyright 2023 Google LLC
14#
15# Licensed under the Apache License, Version 2.0 (the "License");
16# you may not use this file except in compliance with the License.
17# You may obtain a copy of the License at
18#
19# http://www.apache.org/licenses/LICENSE-2.0
20#
21# Unless required by applicable law or agreed to in writing, software
22# distributed under the License is distributed on an "AS IS" BASIS,
23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24# See the License for the specific language governing permissions and
25# limitations under the License.
27import sys
28import atheris
30from docutils.parsers.rst import Parser
31from docutils.frontend import get_default_settings
32from docutils.utils import new_document
33from docutils import nodes
34from docutils import ApplicationError
35from docutils.parsers.rst import tableparser
36from docutils.statemachine import StringList, string2lines
37from docutils.transforms.universal import (SmartQuotes, TestMessages,
38 Decorations, ExposeInternals,
39 Messages, FilterMessages,
40 StripComments,
41 StripClassesAndElements)
44def TestOneInput(data):
45 fdp = atheris.FuzzedDataProvider(data)
46 parser = Parser()
47 settings = get_default_settings(Parser)
48 settings.warning_stream = ""
49 settings.smart_quotes = fdp.ConsumeBool()
50 settings.trim_footnote_ref_space = fdp.ConsumeBool()
51 settings.report = fdp.ConsumeIntInRange(0, 5)
53 doc = new_document(fdp.ConsumeUnicodeNoSurrogates(64), settings.copy())
54 try:
55 parser.parse(fdp.ConsumeUnicodeNoSurrogates(fdp.ConsumeIntInRange(0, 2048)), doc)
56 if fdp.ConsumeBool():
57 doc.transformer.add_transforms([TestMessages])
58 if fdp.ConsumeBool():
59 doc.transformer.add_transform(SmartQuotes)
60 if fdp.ConsumeBool():
61 doc.transformer.add_transform(Decorations)
62 if fdp.ConsumeBool():
63 doc.transformer.add_transform(ExposeInternals)
64 if fdp.ConsumeBool():
65 doc.transformer.add_transform(Messages)
66 if fdp.ConsumeBool():
67 doc.transformer.add_transform(FilterMessages)
68 if fdp.ConsumeBool():
69 doc.transformer.add_transform(StripComments)
70 if fdp.ConsumeBool():
71 doc.transformer.add_transform(StripClassesAndElements)
72 doc.transformer.apply_transforms()
73 o = doc.pformat()
75 visitor = nodes.TreeCopyVisitor(doc)
76 doc.walkabout(visitor)
77 newtree = visitor.get_tree_copy()
78 except ApplicationError:
79 pass
82def main():
83 atheris.instrument_all()
84 atheris.Setup(sys.argv, TestOneInput, enable_python_coverage=True)
85 atheris.Fuzz()
88if __name__ == "__main__":
89 main()