difftastic/vendored_parsers/tree-sitter-racket/fuzztest
Wilfred Hughes 4e77f83dd9 Merge commit '7dc4fb60390218b09bc351062eeede7dcdbb4d9f' 2023-08-08 23:37:28 +07:00
..
.gitignore Merge commit '7dc4fb60390218b09bc351062eeede7dcdbb4d9f' 2023-08-08 23:37:28 +07:00
README.md Merge commit '7dc4fb60390218b09bc351062eeede7dcdbb4d9f' 2023-08-08 23:37:28 +07:00
gen_cases.rkt Merge commit '7dc4fb60390218b09bc351062eeede7dcdbb4d9f' 2023-08-08 23:37:28 +07:00
postprocess.rkt Merge commit '7dc4fb60390218b09bc351062eeede7dcdbb4d9f' 2023-08-08 23:37:28 +07:00

README.md

fuzz test

The directory contains the scripts that test the implementation to avoid the problem that a symbol is parsed as a number or vice versa.

Resource

  • ~6 minutes to run
  • ~300M generated files

Run

$ cd fuzztest
# 30s
$ racket gen_cases.rkt
cpu time: 26531 real time: 26835 gc time: 1069
5114173 cases generated
$ cd ..
$ tree-sitter generate
# 3 minutes
$ tree-sitter parse fuzztest/case.txt > fuzztest/res1.txt
# 2 minutes
$ cd fuzztest && racket postprocess.rkt
# should show nothing
$ sdiff -s <(cat -n expect.txt) <(cat -n res.txt)

# If there is some error, run
$ sdiff -s <(cat -n expect.txt) <(cat -n res.txt) | less
# then get the first error case at `N`-th line
$ cat case.txt | sed -n 'Np'

You can edit gen_cases.rkt to generate less cases during development.