diff --git a/chrome/content/zotero/xpcom/debug.js b/chrome/content/zotero/xpcom/debug.js index b716b94c08..4ea75d8f1c 100644 --- a/chrome/content/zotero/xpcom/debug.js +++ b/chrome/content/zotero/xpcom/debug.js @@ -73,7 +73,7 @@ Zotero.Debug = new function () { if (Zotero.isStandalone) { // Enable dump() from window (non-XPCOM) scopes when terminal or viewer logging is enabled. // (These will always go to the terminal, even in viewer mode.) - Zotero.Prefs.set('browser.dom.window.dump.enabled', _console || _consoleViewer, true); + Zotero.Prefs.set('browser.dom.window.dump.enabled', _console || _consoleViewer || Zotero.test, true); if (_consoleViewer) { setTimeout(function () { diff --git a/chrome/content/zotero/xpcom/schema.js b/chrome/content/zotero/xpcom/schema.js index 2e30445a45..ed4a753405 100644 --- a/chrome/content/zotero/xpcom/schema.js +++ b/chrome/content/zotero/xpcom/schema.js @@ -105,7 +105,9 @@ Zotero.Schema = new function(){ Zotero.debug('Database does not exist -- creating\n'); return _initializeSchema() .then(function() { - (Zotero.isStandalone ? Zotero.uiReadyPromise : Zotero.initializationPromise) + // Don't load bundled files until after UI is ready, unless this is a test run, + // in which case tests can run without a window open + (!Zotero.test ? Zotero.uiReadyPromise : Zotero.initializationPromise) .delay(1000) .then(async function () { await this.updateBundledFiles(); @@ -294,9 +296,8 @@ Zotero.Schema = new function(){ // Reset sync queue tries if new version await _checkClientVersion(); - // In Standalone, don't load bundled files until after UI is ready. In Firefox, load them as - // soon initialization is done so that translation works before the Zotero pane is opened. - (Zotero.isStandalone ? Zotero.uiReadyPromise : Zotero.initializationPromise) + // See above + (!Zotero.test ? Zotero.uiReadyPromise : Zotero.initializationPromise) .then(() => { setTimeout(async function () { try { @@ -847,11 +848,12 @@ Zotero.Schema = new function(){ await Zotero.SearchConditions.init(); // Update item type menus in every open window + // TODO: Remove? Zotero.Schema.schemaUpdatePromise.then(function () { var enumerator = Services.wm.getEnumerator("navigator:browser"); while (enumerator.hasMoreElements()) { let win = enumerator.getNext(); - win.document.getElementById('zotero-editpane-item-box').buildItemTypeMenu(); + //win.document.getElementById('zotero-editpane-item-box').buildItemTypeMenu(); } }); } diff --git a/chrome/content/zotero/xpcom/zotero.js b/chrome/content/zotero/xpcom/zotero.js index be41816dff..386a0b0980 100644 --- a/chrome/content/zotero/xpcom/zotero.js +++ b/chrome/content/zotero/xpcom/zotero.js @@ -54,7 +54,16 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js"); this.startupError; Object.defineProperty(this, 'startupErrorHandler', { get: () => _startupErrorHandler, - enumerable: true + enumerable: true, + configurable: true + }); + Object.defineProperty(this, 'resourcesDir', { + get: () => { + // AChrome is app/chrome + return FileUtils.getDir('AChrom', []).parent.parent.path; + }, + enumerable: true, + configurable: true }); this.version; this.platform; @@ -107,7 +116,8 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js"); this.unlockDeferred.resolve(); } }, - enumerable: true + enumerable: true, + configurable: true } ); diff --git a/test/chrome.manifest b/test/chrome.manifest index 7885787e74..2a3ff974a6 100644 --- a/test/chrome.manifest +++ b/test/chrome.manifest @@ -1,7 +1,7 @@ -content zotero-unit content/ -resource zotero-unit resource/ -resource zotero-unit-tests tests/ +content zotero-unit test/content/ +resource zotero-unit test/resource/ +resource zotero-unit-tests test/tests/ -component {b8570031-be5e-46e8-9785-38cd50a5d911} components/zotero-unit.js +component {b8570031-be5e-46e8-9785-38cd50a5d911} test/components/zotero-unit.js contract @mozilla.org/commandlinehandler/general-startup;1?type=zotero-unit {b8570031-be5e-46e8-9785-38cd50a5d911} category command-line-handler m-zotero-unit @mozilla.org/commandlinehandler/general-startup;1?type=zotero-unit diff --git a/test/components/zotero-unit.js b/test/components/zotero-unit.js index cb703212cd..354f1ae250 100644 --- a/test/components/zotero-unit.js +++ b/test/components/zotero-unit.js @@ -23,7 +23,7 @@ ***** END LICENSE BLOCK ***** */ -Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); +Components.utils.import("resource://gre/modules/ComponentUtils.jsm"); function ZoteroUnit() { this.wrappedJSObject = this; @@ -56,4 +56,4 @@ ZoteroUnit.prototype = { }; -var NSGetFactory = XPCOMUtils.generateNSGetFactory([ZoteroUnit]); +var NSGetFactory = ComponentUtils.generateNSGetFactory([ZoteroUnit]); diff --git a/test/content/support.js b/test/content/support.js index 574eaeff5e..6fa3e9b8ca 100644 --- a/test/content/support.js +++ b/test/content/support.js @@ -557,11 +557,10 @@ function initPDFToolsPath() { * (i.e., test/tests/data) */ function getTestDataDirectory() { - var resource = Services.io.getProtocolHandler("resource"). - QueryInterface(Components.interfaces.nsIResProtocolHandler), - resURI = Services.io.newURI("resource://zotero-unit-tests/data", null, null); - return Services.io.newURI(resource.resolveURI(resURI), null, null). - QueryInterface(Components.interfaces.nsIFileURL).file; + var file = Zotero.File.pathToFile(Zotero.resourcesDir); + file.append('tests'); + file.append('data'); + return file; } function getTestDataUrl(path) { diff --git a/test/runtests.sh b/test/runtests.sh index d306b69049..b0be5a650a 100755 --- a/test/runtests.sh +++ b/test/runtests.sh @@ -15,18 +15,18 @@ function makePath { eval $__assignTo="'$__path'" } -if [ -z "$FX_EXECUTABLE" ]; then +if [ -z "$Z_EXECUTABLE" ]; then if [ "`uname`" == "Darwin" ]; then - FX_EXECUTABLE="$( dirname "$ROOT_DIR" )/zotero-standalone-build/xulrunner/Firefox.app/Contents/MacOS/firefox" + Z_EXECUTABLE="$( dirname "$ROOT_DIR" )/zotero-standalone-build/staging/Zotero.app/Contents/MacOS/zotero" else - FX_EXECUTABLE="$( dirname "$ROOT_DIR" )/zotero-standalone-build/xulrunner/firefox-x86_64/firefox" + Z_EXECUTABLE="$( dirname "$ROOT_DIR" )/zotero-standalone-build/staging/Zotero-x86_64/zotero" fi fi if [ -z "$DISPLAY" ]; then - FX_ARGS="" + Z_ARGS="" else - FX_ARGS="--class=ZTestFirefox" + Z_ARGS="--class=ZTestFirefox" fi function usage { @@ -42,7 +42,7 @@ Options -h display this help -s TEST start at the given test -t generate test data and quit - -x FX_EXECUTABLE path to Firefox executable (default: $FX_EXECUTABLE) + -x EXECUTABLE path to Zotero executable (default: $Z_EXECUTABLE) TESTS set of tests to run (default: all) DONE exit 1 @@ -53,10 +53,10 @@ DEBUG_LEVEL=5 while getopts "bcd:e:fg:hs:tx:" opt; do case $opt in b) - FX_ARGS="$FX_ARGS -ZoteroSkipBundledFiles" + Z_ARGS="$Z_ARGS -ZoteroSkipBundledFiles" ;; c) - FX_ARGS="$FX_ARGS -jsconsole -noquit" + Z_ARGS="$Z_ARGS -jsconsole -noquit" ;; d) DEBUG=true @@ -66,10 +66,10 @@ while getopts "bcd:e:fg:hs:tx:" opt; do if [[ -z "$OPTARG" ]] || [[ ${OPTARG:0:1} = "-" ]]; then usage fi - FX_ARGS="$FX_ARGS -stopAtTestFile $OPTARG" + Z_ARGS="$Z_ARGS -stopAtTestFile $OPTARG" ;; f) - FX_ARGS="$FX_ARGS -bail" + Z_ARGS="$Z_ARGS -bail" ;; g) GREP="$OPTARG" @@ -81,13 +81,13 @@ while getopts "bcd:e:fg:hs:tx:" opt; do if [[ -z "$OPTARG" ]] || [[ ${OPTARG:0:1} = "-" ]]; then usage fi - FX_ARGS="$FX_ARGS -startAtTestFile $OPTARG" + Z_ARGS="$Z_ARGS -startAtTestFile $OPTARG" ;; t) - FX_ARGS="$FX_ARGS -makeTestData" + Z_ARGS="$Z_ARGS -makeTestData" ;; x) - FX_EXECUTABLE="$OPTARG" + Z_EXECUTABLE="$OPTARG" ;; *) usage @@ -115,13 +115,9 @@ ulimit -n 4096 # Set up profile directory TEMPDIR="`mktemp -d 2>/dev/null || mktemp -d -t 'zotero-unit'`" PROFILE="$TEMPDIR/profile" -mkdir -p "$PROFILE/extensions" +mkdir -p "$PROFILE" makePath ZOTERO_PATH "$ROOT_DIR/build" -echo "$ZOTERO_PATH" > "$PROFILE/extensions/zotero@chnm.gmu.edu" - -makePath ZOTERO_UNIT_PATH "$ZOTERO_PATH/test" -echo "$ZOTERO_UNIT_PATH" > "$PROFILE/extensions/zotero-unit@zotero.org" # Create data directory mkdir "$TEMPDIR/Zotero" @@ -144,9 +140,7 @@ if [ ! -f "$PDF_TOOLS_CACHE_DIR/$PDF_TOOLS_VERSION" ]; then fi cp -R $PDF_TOOLS_CACHE_DIR $PDF_TOOLS_DIR -# Add default prefs, which are apparently no longer read from extensions in Firefox 60 -cat "$ZOTERO_PATH/defaults/preferences/zotero.js" | sed 's/^pref/user_pref/g' > "$PROFILE/prefs.js" - +touch "$PROFILE/prefs.js" cat <> "$PROFILE/prefs.js" user_pref("app.update.enabled", false); user_pref("extensions.autoDisableScopes", 0); @@ -181,11 +175,11 @@ EOF # -v flag on Windows makes Firefox process hang if [ -z $IS_CYGWIN ]; then - echo "`MOZ_NO_REMOTE=1 NO_EM_RESTART=1 \"$FX_EXECUTABLE\" -v`" + echo "`MOZ_NO_REMOTE=1 NO_EM_RESTART=1 \"$Z_EXECUTABLE\" -v`" fi if [ -n "$CI" ]; then - FX_ARGS="$FX_ARGS -ZoteroAutomatedTest -ZoteroTestTimeout 15000" + Z_ARGS="$Z_ARGS -ZoteroAutomatedTest -ZoteroTestTimeout 15000" fi # Clean up on exit @@ -201,9 +195,11 @@ if [[ -z "$CI" ]] && ! ps | grep scripts/build.js | grep -v grep > /dev/null; th echo fi +ZOTERO_INCLUDE_TESTS=1 $( dirname "$ROOT_DIR" )/zotero-standalone-build/scripts/dir_build -q + makePath FX_PROFILE "$PROFILE" -MOZ_NO_REMOTE=1 NO_EM_RESTART=1 "$FX_EXECUTABLE" -profile "$FX_PROFILE" \ - -chrome chrome://zotero-unit/content/runtests.html -test "$TESTS" -grep "$GREP" -ZoteroTest $FX_ARGS +MOZ_NO_REMOTE=1 NO_EM_RESTART=1 "$Z_EXECUTABLE" -profile "$FX_PROFILE" -jsconsole \ + -chrome chrome://zotero-unit/content/runtests.html -test "$TESTS" -grep "$GREP" -ZoteroTest $Z_ARGS # Check for success test -e "$PROFILE/success"