Scripts to audit skipped tests for Fission.
-
Download the "fission-tests-status" sheet as a csv from here.
-
Run
get_skipped_tests.pywith that csv as input. The 2nd argument will filter skipped tests based on their build.$ ./get_skipped_tests.py fission-tests-status.csv [opt|debug]This will print a list of skipped tests to stdout.
-
Use
unskip.shto unskip tests locally.$ cat skipped-tests | xargs -n1 -I{} ./unskip.sh {} /path/to/mozilla-central -
You can use
run-tests.shto run the tests locally to confirm that they're actually passing. This step will take time and is mostly optional. It may avoid running unnecessary tests on try.$ ./run-tests.sh skipped-tests /path/to/mozilla-central -
If you ran the tests locally, you should now have 2 new files:
passandfail. Tests in thefailfile are still failing locally, so they shouldn't be unskipped. Usereskip.shto update their annotations.$ cat fail | xargs -n1 -I{} ./reskip.sh {} /path/to/mozilla-central
-
Commit the changes.
$ cd /path/to/mozilla-central $ hg commit -m "Unskip fission tests" -m "$(cat /path/to/skipped-tests)"
-
Push to try. There's many ways to do this. The following runs the unskipped tests 3 times on an artifact build. When the fuzzy chooser shows up, filter on
"-fis-"and select all jobs.$ cat /path/to/skipped-tests | xargs mach try fuzzy --rebuild 3 --artifact
The try push will take some time. After it's done you can use the scripts in analyze/ to fetch and parse test logs.
$ cd analyze/
$ ./fetch_logs.py 'https://treeherder.mozilla.org/#/jobs?repo=try&revision=$REVISION' logs/
$ ./check_logs.py logs/*.logThis will print tests that failed or timed out. You can manually go through this list and run reskip.sh to re-add the skip annotation for tests that are still failing. You should now have a list of tests that are no longer failing and can be unskipped permanantely. You'll need to manually go through this list and remove the "skip-if = false" annotations. There's generally not that many tests to update at this point, so it shouldn't take long, but scripts to automate this would be nice.