Mobile/Fennec Xpcshell: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
Line 23: Line 23:


Transfer tar files to device via scp and untar it in a _tests/ directory.
Transfer tar files to device via scp and untar it in a _tests/ directory.
NOTE: the _tests directory needs to be ../../ from the xulrunner directory.  So if you have a fennec/xulrunner/ directory which contains the xulrunner application, you would need to put the _tests/ folder adjacent to the fennec folder.  This is because some tests like test_extensionmanager reference files in ../../_tests/test_extensionmanager/unit from the appdir.


NOTE: it would be nice if the build script (make) would copy the test harness and support files from the source tree to the xulrunner directory.
NOTE: it would be nice if the build script (make) would copy the test harness and support files from the source tree to the xulrunner directory.

Revision as of 22:17, 4 February 2009

Getting the Tests

Edit your mozconfig to contain the following lines:

ac_add_options --enable-tests

Get the source and build according to instructions.

to learn more about the tests, visit the [MDC Guide]

Porting tests to N800

If following directions for running fennec on N800/N810 devices, you will need to package up the tests from the xulrunner directory and the test harness from the source tree:

cp $(topsrcdir)/testing/xpcshell/* $(xul_objdir)/_tests/
cd $(xul_objdir)/_tests
tar -chf xpcshell.tar xpcshell/ xpcshell-simple/

In addition, we need to copy all the unit/ directories which contain data files, include files and other support scripts. We have developed a script [xpctest-extract.py] which will create a xpcfiles.tar for you to copy and untar in the root of your xpcshell test directory

Transfer tar files to device via scp and untar it in a _tests/ directory.

NOTE: the _tests directory needs to be ../../ from the xulrunner directory. So if you have a fennec/xulrunner/ directory which contains the xulrunner application, you would need to put the _tests/ folder adjacent to the fennec folder. This is because some tests like test_extensionmanager reference files in ../../_tests/test_extensionmanager/unit from the appdir.

NOTE: it would be nice if the build script (make) would copy the test harness and support files from the source tree to the xulrunner directory.

Getting the Tests

Edit your mozconfig to contain the following lines:

ac_add_options --enable-tests

Get the source and build according to instructions.

to learn more about the tests, visit the [MDC Guide]


Running the tests

The tests are normally ran via "make check" from the root of the objdir. In this case, we are running the tests on the device and there is no source tree.

Inspecting the test_all.sh script in harness/xpcshell, you can run the test from the command line by doing this:

Run the tests from the directory where you unzipped them like so:

./run-mozilla.sh xpcshell  -f /media/mmc1/unittests/xpcshell/xpcshell/head.js  -f /media/mmc1/unittests/xpcshell/xpcshell-simple/test_update/unit/test_0051_general.js  -f /media/mmc1/unittests/xpcshell/xpcshell/tail.js  -f /media/mmc1/unittests/xpcshell/xpcshell/execute_test.js

This is a cumbersome process, and to make this reasonable, we have created [xpctest.py] to run the tests. This script needs to be edited to point to the xpcshell executable as well as the root of the test harness and test directories. It will iterate the tests and build up a list of test_ files to run tests against, then run the above command for you.

TODO's

NOTE: this runs 525 tests where there are 548 tests which run on Firefox (in release only, debug core dumps on assertions at test 223). It appears we are not running on Fennec: test_privatebrowsing/unit/* (6 tests) test_browser_places/unit/* (6 tests) test_browser_feeds/unit/* (1 test)

  • need to find the other 10 missing tests still


Of the 26 failures found, we have these issues:


  • 3 - test_places/autocomplete/
    • test_download_embed_bookmarks.js
    • test_special_search.js
    • test_empty_search.js
  • 3 - test_places/unit/
    • test_000_frecency.js
    • test_adaptive.js
    • test_frecency.js
  • 1 - test_places/sync/test_database_sync_embed_visits.js
  • 1 - test_libjar/unit/test_bug278262.js
  • 5 - test_satchel/unit/ <- all of these fail to verify expected values
    • test_db_corrupt.js
    • test_db_update_v999a.js
    • test_history_api.js
    • test_db_update_v1.js
    • test_db_update_v999b.js
  • 4 test_extensionsmanager/unit/ - possibly path _tests/xpcshell-simple/test_extensionmanager requirement?
    • test_bug428341.js
    • test_bug299716.js
    • test_bug396129.js
    • test_bug463819.js
  • 4 test_update/unit/ <- do we need these for fennec? update is so different
    • test_0040_general.js
    • test_0110_general.js
    • test_0030_general.js
    • test_0020_general.js
  • 3 test_necko/test/
    • test_request_line_split_in_two_packets.js
    • test_sjs_throwing_exceptions.js
    • test_bug414122.js
  • 1 test_places/queries/test_querySerialization.js
  • 1 test_intl_locale/unit/test_pluralForm.js


NOTE: the above data is running on fennec in the mobile_debug objdir structure. I have replicated this on the device and I get 455 pass and 52 failures. So we are missing 18 teests and fail 26 additional tests.