On Wed, Jun 12, 2019 at 09:23:41AM -0700, Josh Steadmon wrote:
> The problem with the existing validators is that they expect each file to be a
> complete JSON entity, whereas the trace output is one object per line. You can
> of course loop over the lines in a shell script, but in my testing this
> approach
> took multiple hours on the full test suite trace output, vs. 15 minutes for
> the
> implementation in this patch.
It seems like it should be easy to turn a sequence of entities into a
single entity, with something like:
echo '['
sed 's/$/,/' <one-per-line
echo ']'
You could even turn a sequence of files into a single entity (which
might be even faster to validate, since it would be one invocation for
the entire test suite) with something like:
echo '{'
for fn in $FILES; do
echo "\"$fn\": "
cat $fn
echo ","
done
echo '}'
though I suspect the resulting error messages might not be as good.
Obviously neither of those is particularly robust if the individual JSON
is not well-formed. But then, if we are mostly interested in testing
whether it's well-formed and expect it to be in the normal case, that
might be a good optimization.
I also wouldn't be surprised if "jq" could do this in a more robust way.
-Peff