test-all with and without -j - incorrect assertions and missing test methods
I always run test-all with a
-v parameter, and although both Travis & Appveyor scripts do not, many of the https://rubyci.org builds seem to. With
-v, one has a log of all test methods.
For quite a while, I ran ruby-loco (MinGW trunk build) with
test-all having no
-j parameter. I've now changed to using
-j, and I'm surprised at what I'm finding.
When run without a
-j parameter, the total test count is correct, but the total assertions count is high.
When run with a
-j parameter (even set to 1), the test count drops (along with tests not appearing in the log), and the total assertions count is correct. Often, whole test files (classes) disappear from the log.
Re the test count variance, I wrote code to parse the logs (the total test count variance), which showed which test methods were present in non-parallel test logs that were missing in parallel test logs.
As to the assertions, I ran test-all on a few single files, and added the assertion count to each test method line, then compared with and without
-j. Finally, by checking individual methods for their respective number of assertions, it was clear that the numbers shown in a non-parallel run were high. At first, it seemed that they were high by a count of three, but that only held for a few files.
First of all, I'm wondering if anyone else has found similar results.
Secondly, I've spent some time verifying this, but I can't seem to find where the code needs corrections to function properly. I hoped it might be a timeout issue, but that doesn't seem to be the case. Hence, suggestions as to where to start are welcome.
Finally, in Travis, the line for test-all is:
make -s $JOBS test-all -o exts TESTOPTS='-q --color=never --job-status=normal'
Using MinGW, adding $JOBS as a make parameter seems to have no effect.