With patches for bug 668349 and 668351, xpcshell tests can be run on an Android device, and the majority of tests pass. However, js/ductwork/debugger/tests/test_nativewrappers.js consistently fails when run on Android.
geoff@geoff-MacBookPro:~/src/mozilla-central/objdir-droid$ make SOLO_FILE=test_nativewrappers.js -C js/ductwork/debugger check-one-remote make: Entering directory `/home/geoff/src/mozilla-central/objdir-droid/js/ductwork/debugger' /usr/bin/python2.6 -u ../../../../config/pythonpath.py \ -I../../../../build \ -I../../../../build/mobile \ ../../../../testing/xpcshell/remotexpcshelltests.py \ --symbols-path=../../../dist/crashreporter-symbols \ --build-info-json=../../../mozinfo.json \ --test-path=test_nativewrappers.js \ --profile-name=fennec \ --verbose \ \ --dm_trans=adb \ --deviceIP= \ --objdir=../../.. \ --noSetup \ ../../../_tests/xpcshell/js/ductwork/debugger/tests 201 KB/s (13771 bytes in 0.066s) will execute commands via run-as org.mozilla.fennec_geoff using APK: ../../../dist/fennec-9.0a1.en-US.eabi-arm.apk chmod /data/local/tests/xpcshell/p TEST-INFO | profile dir is /data/local/tests/xpcshell/p TEST-INFO | /home/geoff/src/mozilla-central/objdir-droid/_tests/xpcshell/js/ductwork/debugger/tests/test_nativewrappers.js | running test ... cd /data/local/tests/xpcshell/js/ductwork/debugger/tests; LD_LIBRARY_PATH=/data/local/tests/xpcshell/b; export CACHE_PATH=/data/local/tests/xpcshell/b; export GRE_HOME=/data/data/org.mozilla.fennec_geoff; export XPCSHELL_TEST_PROFILE_DIR=/data/local/tests/xpcshell/p; /data/local/tests/xpcshell/b/xpcshell -r /data/local/tests/xpcshell/c/httpd.manifest --greomni /data/local/tests/xpcshell/b/fennec-9.0a1.en-US.eabi-arm.apk -j -s -e 'const _HTTPD_JS_PATH = "/data/local/tests/xpcshell/c/httpd.js";' -e 'const _HEAD_JS_PATH = "/data/local/tests/xpcshell/head.js";' -f /data/local/tests/xpcshell/head.js -e 'const _SERVER_ADDR = "localhost"' -e 'const _HEAD_FILES = ["head_dbg.js"];' -e 'const _TAIL_FILES = ;' -e 'const _TEST_FILE = ["test_nativewrappers.js"];' -e '_execute_test(); quit(0);' TEST-KNOWN-FAIL | /home/geoff/src/mozilla-central/objdir-droid/_tests/xpcshell/js/ductwork/debugger/tests/test_nativewrappers.js | test passed (time: 965.085ms) >>>>>>> TEST-INFO | (xpcshell/head.js) | test 1 pending TEST-UNEXPECTED-FAIL | (xpcshell/head.js) | [Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIXPCComponents_Utils.import]" nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)" location: "JS frame :: test_nativewrappers.js :: run_test :: line 3" data: no] <<<<<<< INFO | Result summary: INFO | Passed: 0 INFO | Failed: 0 INFO | Todo: 1 make: Leaving directory `/home/geoff/src/mozilla-central/objdir-droid/js/ductwork/debugger'
I'm familiar with this test and AFAICT it fails because the resource in the following statement cannot be found: Components.utils.import("resource://gre/modules/jsdebugger.jsm"); I don't know how mobile Firefox is packaged, do you happen to know why that would be the case?
(In reply to Panos Astithas [:past] from comment #2) These tests were run with "make xpcshell-tests-remote", which mostly invokes testing/xpcshell/remotexpcshelltests.py, which copies files to the Android device and then invokes xpcshell. There is some info here: https://wiki.mozilla.org/Mobile/Fennec/Android#xpcshell remotexpcshelltests.py does not copy jsdebugger.jsm to the device, so that seems to be a problem. I haven't been able to figure out where to copy it to...do you know what "resource://gre/modules/jsdebugger.jsm" translates to, in terms of a path on the filesystem?
Thanks. I meant deployment path: If I can determine where to copy jsdebugger.jsm to on the Android device, this should be simple to fix. Note, from comment 1, we use a --greomni argument: --greomni /data/local/tests/xpcshell/b/fennec-9.0a1.en-US.eabi-arm.apk but I'm sure jsdebugger.jsm is not in the apk, and shouldn't be. There's also: export GRE_HOME=/data/data/org.mozilla.fennec_geoff I tried creating /data/data/org.mozilla.fennec_geoff/modules/jsdebugger.jsm -- it didn't help.
(In reply to Geoff Brown [:gbrown] from comment #5) > Thanks. I meant deployment path: If I can determine where to copy > jsdebugger.jsm to on the Android device, this should be simple to fix. > > Note, from comment 1, we use a --greomni argument: > > --greomni /data/local/tests/xpcshell/b/fennec-9.0a1.en-US.eabi-arm.apk > > but I'm sure jsdebugger.jsm is not in the apk, and shouldn't be. Can you elaborate on that? Why shouldn't this module be included? Aren't other modules already there? The debugger is now an important part of SpiderMonkey and this tiny module exposes that functionality to JS code.
Sorry - I was completely wrong about that: modules/jsdebugger.jsm *is* in the apk. I wonder why it isn't being found.
I traced this a little today, but did not find the cause of the failure. It looks like the --greomni correctly sets the apk for resource://gre requests. Also, nsZipArchive::GetData succeeds for the modules/jsdebugger.jsm request -- it appears to successfully retrieve the file data. I am on vacation for a few days...will look into it further on my return, if needed.
jsdebugger.jsm is successfully retrieved from the apk but js::Interpret fails (returns false)...I do not know the cause of the failure.
IIRC Firefox Mobile has the methodjit (or something) disabled? Could that be related? Perhaps jorendorff has some ideas.
Per policy at https://wiki.mozilla.org/Bug_Triage/Projects/Bug_Handling/Bug_Husbandry#Inactive_Bugs. If this bug is not an enhancement request or a bug not present in a supported release of Firefox, then it may be reopened.
Status: NEW → RESOLVED
Last Resolved: 5 months ago
Resolution: --- → INACTIVE
You need to log in before you can comment on or make changes to this bug.