Created an initial comparative fuzzing target.
Created a fuzzing target which compares grass with the npm sass
This is an initial suggestion. It only compares whether they both accept the input or both reject the input. It does not yet compare the result. It also runs a bit slow.
While it runs slow it already found a difference between them for: "\nJ*{" for example
Is there a way to configure it to only look for inputs that we deny but that dart-sass accepts? For right now grass has a glaring issue in that it does not check for matching closing braces, so I would assume there will be a lot of noise coming from there.
I am hoping to resolve this issue by rewriting parsing to construct an AST at some point in the near future.
I didn't know that, I'll change it to be as you said, probably make it use an enum so it can be easily changed how it checks when that rewrite is done for example.
I checked this out and made the modification to only fail when dart-sass accepts a program but grass does not. Unfortunately, the speed of the fuzzing target seems prohibitively slow, to the point of not being useful. I wonder if there's a way to speed up the dart-sass binary somehow in order to make the performance somewhat reasonable?