json/test/data/nst_json_testsuite2/README.md

56 lines
1.5 KiB
Markdown
Raw Normal View History

# JSON Parsing Test Suite
A comprehensive test suite for RFC 8259 compliant JSON parsers
This repository was created as an appendix to the article [Parsing JSON is a Minefield 💣](http://seriot.ch/parsing_json.php).
**/parsers/**
This directory contains several parsers and tiny wrappers to turn the parsers into JSON validators, by returning a specific value.
- `0` the parser did accept the content
- `1` the parser did reject the content
- `>1` the process did crash
- `timeout` happens after 5 seconds
**/test\_parsing/**
The name of these files tell if their contents should be accepted or rejected.
- `y_` content must be accepted by parsers
- `n_` content must be rejected by parsers
- `i_` parsers are free to accept or reject content
**/test\_transform/**
These files contain weird structures and characters that parsers may understand differently, eg:
- huge numbers
- dictionaries with similar keys
- NULL characters
- escaped invalid strings
These files were used to produce `results/transform.html`.
**/run_tests.py**
Run all parsers with all files:
$ python3 run_tests.py
Run all parsers with a specific file:
$ python3 run_tests.py file.json
Run specific parsers with all files:
$ echo '["Python 2.7.10", "Python 3.5.2"]' > python_only.json
$ python3 run_tests.py --filter=python_only.json
The script writes logs in `results/logs.txt`.
The script then reads `logs.txt` and generates `results/parsing.html`.
**/results/**
<img src="results/pruned_results.png" alt="JSON Parsing Tests" />