Previously, mach xpcshell-test and mochitest-* were limited to a single
test "path" argument. This patch enables multiple arguments to be passed
in.
TestResolver in the build system has gained the ability to process
multiple paths in a single invocation. The mach commands have been
modified to utilize this new feature.
Only mach code paths that pass manifestdestiny.TestManifest instances
into the test runner can accept multiple arguments. This is because
there is no other way to pass a custom set of tests into the test
runner. If multiple test arguments are used but not supported, a warning
is emitted.
--HG--
extra : rebase_source : 1ce1328a969f654e7b43a7a0bdd15ed86f5ceb21
The mochitest mach commands now consult the all-tests.json file for
resolving the test argument/path. The mochitest runner has been modified
to accept a manifestdestiny.TestManifest instance instead of a path to a
manifest file. The mach commands construct an in-memory TestManifest and
pass it to the mochitest runner.
While I was here, I cleaned up some old JSON serializing code.
--HG--
extra : rebase_source : 886b13d4cb35992c132bc3051925424609a5fdf8
The mochitest runner could start a child process but not clean it up in
all cases. This patch ensures we always try to stop child processes
before exiting.
Ideally, things should probably be implemented as context managers or
the cleanup logic should live in a __del__. But, perfect is the enemy of
done. This simple approach appears to solve the problem in a manner that
isn't too invasive.
--HG--
extra : rebase_source : 685d23c31184808a12f9ee3571391381eda8c5fb
extra : amend_source : 780f36555cb94870dd063842aa226c27da8d95b0
This patch adds an extra check for paint suppression when waiting for paint
events. This is because on some platforms (notably B2G) we can think all paints
have completed because paint suppression is in effect and as a result call the
callback too soon.
This patch use window.setTimeout(..., 0) to wait for paint suppression to finish
before preceding to check for pending paint events.
When the refresh driver is under test control, if we detect that paint events
are pending we need to force a refresh driver tick. This patch adds that tick.
I suppose we had previously never hit this situation before and never noticed
this.
This patch also rearranges the main loop so that early returns appear first and
calling the callback appears at the end.
Sometimes the clock.sleep(0.1) may take shorter than 0.1 seconds. This
isn't a test about precision in Python, but rather that the SystemClock
wrapper works as intended and returns a somewhat expected value.