mirror of
https://gitlab.gnome.org/jwestman/blueprint-compiler.git
synced 2025-05-05 16:09:07 -04:00
tests: Add fuzz test
This commit is contained in:
parent
4e2501c7d7
commit
9144ac67f0
5 changed files with 61 additions and 1 deletions
27
tests/fuzz.py
Normal file
27
tests/fuzz.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
from pythonfuzz.main import PythonFuzz
|
||||
|
||||
from blueprintcompiler import tokenizer, parser, decompiler
|
||||
from blueprintcompiler.completions import complete
|
||||
from blueprintcompiler.errors import PrintableError, MultipleErrors, CompileError, CompilerBugError
|
||||
from blueprintcompiler.tokenizer import Token, TokenType, tokenize
|
||||
from blueprintcompiler import utils
|
||||
|
||||
@PythonFuzz
|
||||
def fuzz(buf):
|
||||
try:
|
||||
blueprint = buf.decode("ascii")
|
||||
|
||||
tokens = tokenizer.tokenize(blueprint)
|
||||
ast, errors, warnings = parser.parse(tokens)
|
||||
|
||||
if errors is None and len(ast.errors) == 0:
|
||||
actual = ast.generate()
|
||||
except CompilerBugError as e:
|
||||
raise e
|
||||
except PrintableError:
|
||||
pass
|
||||
except UnicodeDecodeError:
|
||||
pass
|
||||
|
||||
if __name__ == "__main__":
|
||||
fuzz()
|
12
tests/fuzz.sh
Executable file
12
tests/fuzz.sh
Executable file
|
@ -0,0 +1,12 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ $# = 1 ]; then
|
||||
RUNS="$1"
|
||||
else
|
||||
RUNS=-1
|
||||
fi
|
||||
|
||||
mkdir -p corpus
|
||||
cp tests/samples/*.blp corpus
|
||||
cp tests/sample_errors/*.blp corpus
|
||||
python3 tests/fuzz.py --runs $RUNS corpus
|
Loading…
Add table
Add a link
Reference in a new issue