Closed Bug 607077 Opened 14 years ago Closed 14 years ago

symbiont tests fail with "TypeError: setting a property that has only a getter" exceptions

Categories

(Core :: XPConnect, defect)

x86
Linux
defect
Not set
normal

Tracking

()

VERIFIED FIXED
mozilla2.0b7
Tracking Status
blocking2.0 --- beta7+

People

(Reporter: myk, Assigned: gal)

References

Details

On trunk, the panel tests all fail with "TypeError: setting a property that has only a getter" exceptions, which causes the tests for all modules that depend on symbiont (f.e. panel) to fail as well: -------------------------------------------------------------------------------- (addon-sdk)myk@myk:~/Projects/addon-sdk/packages/jetpack-core$ cfx test -F symbiont Using binary at '/home/myk/bin/firefox'. Using profile at '/tmp/tmp89kHKl.mozrunner'. (firefox-bin:2716): GLib-WARNING **: g_set_prgname() called multiple times console: [JavaScript Error: "uncaught exception: TypeError: setting a property that has only a getter"] error: TEST FAILED: test-content-symbiont.test:constructing symbiont && validateing API (timed out) console: [JavaScript Error: "uncaught exception: TypeError: setting a property that has only a getter"] error: An exception occurred. Traceback (most recent call last): File "resource://jetpack-core-jetpack-core-lib/timer.js", line 64, in notifyOnTimeout this._callback.apply(null, this._params); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 255, in timer.setTimeout(function() { onDone(self); }, 0); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 280, in runNextTest self.start({test: test, onDone: runNextTest}); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 298, in start this.test.testFunction(this); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 63, in runTest test(runner); File "resource://jetpack-core-jetpack-core-tests/test-content-symbiont.js", line 124, in onMessage: function(msg) { File "resource://jetpack-core-jetpack-core-lib/traits.js", line 118, in Trait return self.constructor.apply(self, arguments) || self._public; File "resource://jetpack-core-jetpack-core-lib/content/symbiont.js", line 79, in Symbiont this.contentURL = options.contentURL; TypeError: setting a property that has only a getter error: An exception occurred. Traceback (most recent call last): File "resource://jetpack-core-jetpack-core-lib/timer.js", line 64, in notifyOnTimeout this._callback.apply(null, this._params); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 255, in timer.setTimeout(function() { onDone(self); }, 0); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 280, in runNextTest self.start({test: test, onDone: runNextTest}); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 298, in start this.test.testFunction(this); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 63, in runTest test(runner); File "resource://jetpack-core-jetpack-core-tests/test-content-symbiont.js", line 145, in onMessage: function(message) { File "resource://jetpack-core-jetpack-core-lib/traits.js", line 118, in Trait return self.constructor.apply(self, arguments) || self._public; File "resource://jetpack-core-jetpack-core-lib/content/symbiont.js", line 79, in Symbiont this.contentURL = options.contentURL; TypeError: setting a property that has only a getter 0 of 6 tests passed. No tests were run FAIL Total time: 41.791663 seconds Program terminated unsuccessfully. -------------------------------------------------------------------------------- Irakli: any idea what might be going on here?
Against the latest Firefox nightly build, with the latest tip of the SDK tree, the test results are now different, but there is still a failure: -------------------------------------------------------------------------------- (addon-sdk)myk@myk:~/Projects/addon-sdk/packages/jetpack-core$ cfx test -F symbiont Using binary at '/home/myk/bin/firefox'. Using profile at '/tmp/tmpuRCQQA.mozrunner'. (firefox-bin:21779): GLib-WARNING **: g_set_prgname() called multiple times console: [JavaScript Error: "uncaught exception: Error: The script option must be a string or an array of strings."] error: TEST FAILED: test-content-symbiont.test:constructing symbiont && validateing API (timed out) .... 4 of 5 tests passed. FAIL Total time: 11.658048 seconds Program terminated unsuccessfully. --------------------------------------------------------------------------------
This might actually be a loader problem. Here are the test results for content/loader: -------------------------------------------------------------------------------- (addon-sdk)myk@myk:~/Projects/addon-sdk/packages/jetpack-core$ cfx test -F content-loader Using binary at '/home/myk/bin/firefox'. Using profile at '/tmp/tmpKgWJEE.mozrunner'. (firefox-bin:25070): GLib-WARNING **: g_set_prgname() called multiple times ...........................error: TEST FAILED: test-content-loader.test:contentScript (exception) error: An exception occurred. Traceback (most recent call last): File "resource://jetpack-core-jetpack-core-lib/timer.js", line 64, in notifyOnTimeout this._callback.apply(null, this._params); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 255, in timer.setTimeout(function() { onDone(self); }, 0); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 280, in runNextTest self.start({test: test, onDone: runNextTest}); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 298, in start this.test.testFunction(this); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 63, in runTest test(runner); File "resource://jetpack-core-jetpack-core-tests/test-content-loader.js", line 168, in loader.contentScript = value = ["1;", "2;"]; File "resource://jetpack-core-jetpack-core-lib/content/loader.js", line 189, in value = validate(value, valid.contentScript); File "resource://jetpack-core-jetpack-core-lib/content/loader.js", line 108, in validate { $: validation } File "resource://jetpack-core-jetpack-core-lib/api-utils.js", line 137, in validateOptions throw requirementError(key, req); File "resource://jetpack-core-jetpack-core-lib/api-utils.js", line 185, in requirementError return new Error(msg); Error: The script option must be a string or an array of strings. .....error: An exception occurred. Traceback (most recent call last): File "resource://jetpack-core-jetpack-core-lib/timer.js", line 64, in notifyOnTimeout this._callback.apply(null, this._params); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 255, in timer.setTimeout(function() { onDone(self); }, 0); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 280, in runNextTest self.start({test: test, onDone: runNextTest}); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 298, in start this.test.testFunction(this); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 63, in runTest test(runner); File "resource://jetpack-core-jetpack-core-tests/test-content-loader.js", line 212, in loader.contentScriptURL = value = [uri]; File "resource://jetpack-core-jetpack-core-lib/content/loader.js", line 173, in value = validate(value, valid.contentScriptURL); File "resource://jetpack-core-jetpack-core-lib/content/loader.js", line 108, in validate { $: validation } File "resource://jetpack-core-jetpack-core-lib/api-utils.js", line 137, in validateOptions throw requirementError(key, req); File "resource://jetpack-core-jetpack-core-lib/api-utils.js", line 185, in requirementError return new Error(msg); Error: The `contentScriptURL` option must be a local file URL or an array ofURLs. 32 of 34 tests passed. FAIL Total time: 1.574987 seconds Program terminated unsuccessfully. -------------------------------------------------------------------------------- Irakli: any thoughts on what is going on here?
Myk, can you explain how this can be reproduced? Where should one pull from, what needs to be built, etc etc?
Pull from http://github.com/mozilla/addon-sdk or its Hg mirror at https://hg.mozilla.org/labs/jetpack-sdk/. Then enter your local clone's directory in a terminal and run "source bin/activate" ("bin\activate.bat" on Windows). Then enter packages/jetpack-core/ and run "cfx test -F symbiont" or "cfx test -F content-loader". That command will look for Firefox, but if it doesn't find it (or if you think it might be finding a different binary than the one you want to test with), specify "--binary=/path/to/binary" on that command line.
I can't reproduce using the current nightly and SDK tree. All content-loader and symbiont tests pass. I'm 99% sure the array-related errors were fixed by the api-utils isArray fix I landed last night -- same code path.
With the fixes for bugs 607799, 607863, 606585, and bug 608142 I still see a failure, but a different one than what's reported here. The symbiont tests pass, but the content-loader tests fail with the following output: (jetpack-sdk)[jst@gandalf jetpack-core]$ cfx test -F content-loader --binary=/home/jst/work/tip/fb-rel/dist/bin/firefox Using binary at '/home/jst/work/tip/fb-rel/dist/bin/firefox'. Using profile at '/tmp/tmpQ8jbHl.mozrunner'. error: TEST FAILED: test-content-loader.test:contentURL (exception) error: An exception occurred. Traceback (most recent call last): File "chrome://browser/content/browser.js", line 6539, in delayedStartup .init(window); File "file:///home/jst/work/tip/fb-rel/dist/bin/components/nsSessionStore.js", line 389, in sss_init this.onLoad(aWindow); File "file:///home/jst/work/tip/fb-rel/dist/bin/components/nsSessionStore.js", line 727, in sss_onLoad Services.obs.notifyObservers(null, NOTIFY_WINDOWS_RESTORED, ""); File "file:///tmp/tmpQ8jbHl.mozrunner/extensions/xulapp@toolness.com/components/harness.js", line 385, in Harness_observe this.load(lifeCycleObserver192.loadReason || "startup"); File "file:///tmp/tmpQ8jbHl.mozrunner/extensions/xulapp@toolness.com/components/harness.js", line 317, in Harness_load obSvc.notifyObservers(null, APP_READY_TOPIC, null); File "resource://jetpack-core-jetpack-core-lib/observer-service.js", line 174, in this.callback(subject, data); File "resource://jetpack-core-test-harness-lib/run-tests.js", line 106, in doRunTests callbacks.print); File "resource://jetpack-core-test-harness-lib/run-tests.js", line 69, in runTests onDone: onDone}); File "resource://jetpack-core-test-harness-lib/harness.js", line 367, in runTests nextIteration(); File "resource://jetpack-core-test-harness-lib/harness.js", line 286, in nextIteration onDone: nextIteration}); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 50, in findAndRunTests onDone: options.onDone}); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 284, in startMany runNextTest(this); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 280, in runNextTest self.start({test: test, onDone: runNextTest}); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 298, in start this.test.testFunction(this); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 63, in runTest test(runner); File "resource://jetpack-core-jetpack-core-tests/test-content-loader.js", line 6, in let loader = Loader(), File "resource://jetpack-core-jetpack-core-lib/traits.js", line 118, in Trait return self.constructor.apply(self, arguments) || self._public; TypeError: self.constructor is undefined error: An exception occurred. Traceback (most recent call last): File "resource://jetpack-core-jetpack-core-lib/timer.js", line 64, in notifyOnTimeout this._callback.apply(null, this._params); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 255, in timer.setTimeout(function() { onDone(self); }, 0); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 280, in runNextTest self.start({test: test, onDone: runNextTest}); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 298, in start this.test.testFunction(this); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 63, in runTest test(runner); File "resource://jetpack-core-jetpack-core-tests/test-content-loader.js", line 100, in let loader = Loader(); File "resource://jetpack-core-jetpack-core-lib/traits.js", line 118, in Trait return self.constructor.apply(self, arguments) || self._public; TypeError: self.constructor is undefined error: An exception occurred. Traceback (most recent call last): File "resource://jetpack-core-jetpack-core-lib/timer.js", line 64, in notifyOnTimeout this._callback.apply(null, this._params); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 255, in timer.setTimeout(function() { onDone(self); }, 0); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 280, in runNextTest self.start({test: test, onDone: runNextTest}); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 298, in start this.test.testFunction(this); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 63, in runTest test(runner); File "resource://jetpack-core-jetpack-core-tests/test-content-loader.js", line 134, in let loader = Loader(), value; File "resource://jetpack-core-jetpack-core-lib/traits.js", line 118, in Trait return self.constructor.apply(self, arguments) || self._public; TypeError: self.constructor is undefined error: An exception occurred. Traceback (most recent call last): File "resource://jetpack-core-jetpack-core-lib/timer.js", line 64, in notifyOnTimeout this._callback.apply(null, this._params); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 255, in timer.setTimeout(function() { onDone(self); }, 0); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 280, in runNextTest self.start({test: test, onDone: runNextTest}); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 298, in start this.test.testFunction(this); File "resource://jetpack-core-jetpack-core-lib/unit-test.js", line 63, in runTest test(runner); File "resource://jetpack-core-jetpack-core-tests/test-content-loader.js", line 176, in let loader = Loader(), value, uri = self.data.url("test-content-loader.js"); File "resource://jetpack-core-jetpack-core-lib/traits.js", line 118, in Trait return self.constructor.apply(self, arguments) || self._public; TypeError: self.constructor is undefined 0 of 4 tests passed. No tests were run FAIL Total time: 8.168638 seconds Program terminated unsuccessfully. (jetpack-sdk)[jst@gandalf jetpack-core]$ cfx test -F symbiont --binary=/home/jst/work/tip/fb-rel/dist/bin/firefox Using binary at '/home/jst/work/tip/fb-rel/dist/bin/firefox'. Using profile at '/tmp/tmpbPY9Dn.mozrunner'. ......... 9 of 9 tests passed. OK Total time: 4.616517 seconds Program terminated successfully.
Blocks a blocker. Please b7+.
Component: Jetpack SDK → XPConnect
Product: Mozilla Labs → Core
QA Contact: jetpack-sdk → xpconnect
Target Milestone: -- → mozilla2.0b7
Version: unspecified → Trunk
blocking2.0: --- → ?
blocking2.0: ? → beta7+
I am passing the test harness with a TM tip debug build. symbiont: 9 of 9 tests passed. content-loader: 34 of 34 tests passed.
Assignee: nobody → gal
I am ready to WFM this if jst can confirm.
Please re-open if you still see issues, this seems resolved for me with TM tip.
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → WORKSFORME
Yup, I see that too. Marking fixed rather than worksforme since it is known to have been broken and then fixed (even if it isn't entirely clear exactly what it was that fixed the problem).
Status: RESOLVED → VERIFIED
Resolution: WORKSFORME → FIXED
FWIW with the patch in bug 596031 applied, I get the same errors in comment 6.
(In reply to comment #11) > Yup, I see that too. Note: I actually meant to say that tests are all passing for me on the latest trunk nightly.
You need to log in before you can comment on or make changes to this bug.