Mobile/Fennec Xpcshell: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
 
(23 intermediate revisions by the same user not shown)
Line 12: Line 12:


==Porting tests to N800==
==Porting tests to N800==
With changes from {{bug|421611}} we have made this process much simpler. 
If following [[Mobile/Build/Fennec#Running Fennec on Maemo|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:
If following [[Mobile/Build/Fennec#Running Fennec on Maemo|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:


<pre>
<pre>
cp $(topsrcdir)/testing/xpcshell/* $(xul_objdir)/_tests/
cd $(xul_objdir)
cd $(xul_objdir)/_tests
make package-tests
tar -chf xpcshell.tar xpcshell/ xpcshell-simple/
cd dist
bunzip2 xulrunner-*tests.tar.bz2
scp xulrunner-*tests.tar root@<deviceip>:/media/mmc1
</pre>
</pre>


Transfer tar file to device via scp and untar it.
On the device, untar the xulrunner-*tests.tar in your test directory alongside the fennec-*.tar:
 
NOTE: it would be nice if the build script (make) would copy the test harness from the source tree to the xulrunner directory.
 
==Getting the Tests==
Edit your mozconfig to contain the following lines:


<pre>
<pre>
ac_add_options --enable-tests
cd /media/mmc1
mkdir unittests
mv fennec-*.tar unittests
mv xulrunner-*tests.tar unittests
cd unittests
tar -xvf fennec-*.tar
tar -xvf xulrunner-*tests.tar
</pre>
</pre>


Get the source and build according to [[Mobile/Build/Fennec|instructions]].
In addition (for xpcshell only), we need to move some of the test binaries into the fennec tree:
 
to learn more about the tests, visit the [[https://developer.mozilla.org/en/Writing_xpcshell-based_unit_tests MDC Guide]]
 
==Porting tests to N800==
If following [[Mobile/Build/Fennec#Running Fennec on Maemo|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:


<pre>
<pre>
cp $(topsrcdir)/testing/xpcshell/* $(xul_objdir)/_tests/
cd /media/mmc1/unittest
cd $(xul_objdir)/_tests
cp bin/* fennec/xulrunner
tar -chf xpcshell.tar xpcshell/ xpcshell-simple/
cp bin/components/* fennec/components
cp bin/plugins/* fennec/xulrunner/plugins
</pre>
</pre>
Transfer tar file to device via scp and untar it.
NOTE: it would be nice if the build script (make) would copy the test harness from the source tree to the xulrunner directory.


==Running the tests==
==Running the tests==
Line 52: Line 50:
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.  
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:
Make check runs [[http://mxr.mozilla.org/mozilla-central/source/testing/xpcshell/runxpcshelltests.py runxpcshelltests.py]].  We can run this on the Maemo platform like this:


Run the tests from the directory where you unzipped them like so:
<pre>
<pre>
./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
cd /media/mmc1/unittests
python -u xpcshell/runxpcshelltests.py --xre-path=/media/mmc1/unittests/fennec/xulrunner --manifest=/media/mmc1/unittests/xpcshell/tests/all-test-dirs.list /media/mmc1/unittests/fennec/xulrunner/xpcshell --keep-going
</pre>
</pre>


This is a cumbersome process, and to make this reasonable, we have created [[http://people.mozilla.com/~jmaher/fennec/xpctests.py xpctest.py]] to run the testsThis 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.
We have created a framework to wrap the unittests [[Mobile/Fennec_Automation|maemkit]] which makes this a little bit easierKeeping the above example, you need to copy the maemkit files to /media/mmc1/maemkit.  


== TODO's ==  
Now Edit the /media/mmc1/maemkit/maemkit.cfg file:
<pre>
[general]
xre-path = /media/mmc1/unittests/fennec/xulrunner
appname = /media/mmc1/unittests/fennec/fennec
total-clients = 1
client-number = 1
logdir = logs
ostype = linux


NOTE: this runs 593 tests where there are 548 tests which run on Firefox (in release only, debug core dumps on assertions at test 223). The bulk of the difference is that on Fennec we appear to be running the "test_extensionmanager/unit/addons" directory where we don't do this on Firefox.
[xpcshell]
testroot = /media/mmc1/unittests/xpcshell/tests
utility-path = /media/mmc1/unittests/xpcshell
manifest = /media/mmc1/unittests/xpcshell/tests/all-test-dirs.list
log-file = log_xpcshell.txt
</pre>


Of the 255 failures found, we have these issues:


72 - failures where test_extensionmanager/unit/addons is involved. Generates a:
Now execute the tests:
* ReferenceError: run_test is not defined
<pre>
cd /media/mmc1/maemkit
python maemkit-chunked.py --testtype=xpcshell
</pre>


118 - related to topsrcdir/testing/xpcshell/head.js: do_import_script and do_get_file with these errors:
You can view the results in /media/mmc1/maemkit/log_xpcshell.txt
* TypeError: environment.NATIVE_TOPSRCDIR is undefined
* TypeError: scriptPath is undefined
* ReferenceError: nsHttpServer is not defined
 
16 - test_places/autocomplete has various errors. It appears to be related to Components.utils.import("resource://gre/modules/XPCOMUtils.jsm") or something that is not allowing Ci, gPages, and prefs to be defined.
 
4 - gPrefs depends on test_extensionmanager/Unit/head_extensionmanager.js#266 to have the path _tests/xpcshell-simple/test_extensionmanager


== TODO's ==


45 other failures to look into
I will start tracking test failures/bugs [[http://people.mozilla.com/~jmaher/mochitest.htm here]].  This doesn't line up with what is below as there is data from fennec desktop and fennec maemo which adds to the mix.

Latest revision as of 17:41, 27 March 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

With changes from bug 421611 we have made this process much simpler.

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:

cd $(xul_objdir)
make package-tests
cd dist
bunzip2 xulrunner-*tests.tar.bz2
scp xulrunner-*tests.tar root@<deviceip>:/media/mmc1

On the device, untar the xulrunner-*tests.tar in your test directory alongside the fennec-*.tar:

cd /media/mmc1
mkdir unittests
mv fennec-*.tar unittests
mv xulrunner-*tests.tar unittests
cd unittests
tar -xvf fennec-*.tar
tar -xvf xulrunner-*tests.tar

In addition (for xpcshell only), we need to move some of the test binaries into the fennec tree:

cd /media/mmc1/unittest
cp bin/* fennec/xulrunner
cp bin/components/* fennec/components
cp bin/plugins/* fennec/xulrunner/plugins

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.

Make check runs [runxpcshelltests.py]. We can run this on the Maemo platform like this:

cd /media/mmc1/unittests
python -u xpcshell/runxpcshelltests.py --xre-path=/media/mmc1/unittests/fennec/xulrunner --manifest=/media/mmc1/unittests/xpcshell/tests/all-test-dirs.list /media/mmc1/unittests/fennec/xulrunner/xpcshell --keep-going

We have created a framework to wrap the unittests maemkit which makes this a little bit easier. Keeping the above example, you need to copy the maemkit files to /media/mmc1/maemkit.

Now Edit the /media/mmc1/maemkit/maemkit.cfg file:

[general]
xre-path = /media/mmc1/unittests/fennec/xulrunner
appname = /media/mmc1/unittests/fennec/fennec
total-clients = 1
client-number = 1
logdir = logs
ostype = linux

[xpcshell]
testroot = /media/mmc1/unittests/xpcshell/tests
utility-path = /media/mmc1/unittests/xpcshell
manifest = /media/mmc1/unittests/xpcshell/tests/all-test-dirs.list
log-file = log_xpcshell.txt


Now execute the tests:

cd /media/mmc1/maemkit
python maemkit-chunked.py --testtype=xpcshell

You can view the results in /media/mmc1/maemkit/log_xpcshell.txt

TODO's

I will start tracking test failures/bugs [here]. This doesn't line up with what is below as there is data from fennec desktop and fennec maemo which adds to the mix.