Bug 1301287 - Password manager: enable eslint semi rule. r=johannh draft
authorMatthew Noorenberghe <mozilla@noorenberghe.ca>
Wed, 07 Sep 2016 21:42:49 -0700
changeset 411458 7579799877e54c86dac70583545160d15ac6e193
parent 411457 35b7990ef95a253847136a3222b4e3bc5e4bb151
child 411459 e94d205df56457aca922b710c05cec0bc9d723e5
push id28900
push usermozilla@noorenberghe.ca
push dateThu, 08 Sep 2016 04:51:12 +0000
reviewersjohannh
bugs1301287
milestone51.0a1
Bug 1301287 - Password manager: enable eslint semi rule. r=johannh .js files were fixed automatically with --fix MozReview-Commit-ID: Get2mxB8Twx
toolkit/components/passwordmgr/.eslintrc
toolkit/components/passwordmgr/LoginImport.jsm
toolkit/components/passwordmgr/LoginStore.jsm
toolkit/components/passwordmgr/OSCrypto_win.js
toolkit/components/passwordmgr/content/passwordManager.js
toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger.js
toolkit/components/passwordmgr/test/browser/browser_passwordmgr_switchtab.js
toolkit/components/passwordmgr/test/mochitest/test_autofill_https_upgrade.html
toolkit/components/passwordmgr/test/mochitest/test_basic_form_2pw_2.html
toolkit/components/passwordmgr/test/mochitest/test_bug_627616.html
toolkit/components/passwordmgr/test/mochitest/test_bug_776171.html
toolkit/components/passwordmgr/test/mochitest/test_prompt_promptAuth_proxy.html
toolkit/components/passwordmgr/test/mochitest/test_xhr_2.html
toolkit/components/passwordmgr/test/prompt_common.js
toolkit/components/passwordmgr/test/test_prompt_async.html
toolkit/components/passwordmgr/test/unit/test_OSCrypto_win.js
toolkit/components/passwordmgr/test/unit/test_logins_search.js
toolkit/components/passwordmgr/test/unit/test_notifications.js
toolkit/components/passwordmgr/test/unit/test_storage_mozStorage.js
--- a/toolkit/components/passwordmgr/.eslintrc
+++ b/toolkit/components/passwordmgr/.eslintrc
@@ -13,10 +13,13 @@
     // Commas at the end of the line not the start
     "comma-style": 2,
 
     // No using undeclared variables
     "no-undef": 2,
 
     // Don't allow unused local variables unless they match the pattern
     "no-unused-vars": [2, {"args": "none", "vars": "local", "varsIgnorePattern": "^(ids|ignored|unused)$"}],
+
+    // Always require semicolon at end of statement
+    "semi": [2, "always"],
   }
 }
--- a/toolkit/components/passwordmgr/LoginImport.jsm
+++ b/toolkit/components/passwordmgr/LoginImport.jsm
@@ -43,17 +43,17 @@ XPCOMUtils.defineLazyModuleGetter(this, 
  * @param aStore
  *        LoginStore object where imported data will be added.
  * @param aPath
  *        String containing the file path of the SQLite login database.
  */
 this.LoginImport = function (aStore, aPath) {
   this.store = aStore;
   this.path = aPath;
-}
+};
 
 this.LoginImport.prototype = {
   /**
    * LoginStore object where imported data will be added.
    */
   store: null,
 
   /**
--- a/toolkit/components/passwordmgr/LoginStore.jsm
+++ b/toolkit/components/passwordmgr/LoginStore.jsm
@@ -75,17 +75,17 @@ Cu.import("resource://gre/modules/Servic
 
 XPCOMUtils.defineLazyModuleGetter(this, "AsyncShutdown",
                                   "resource://gre/modules/AsyncShutdown.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "DeferredTask",
                                   "resource://gre/modules/DeferredTask.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
                                   "resource://gre/modules/FileUtils.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "OS",
-                                  "resource://gre/modules/osfile.jsm")
+                                  "resource://gre/modules/osfile.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "gTextDecoder", function () {
   return new TextDecoder();
 });
 
 XPCOMUtils.defineLazyGetter(this, "gTextEncoder", function () {
   return new TextEncoder();
 });
@@ -214,17 +214,17 @@ LoginStore.prototype = {
     if (this.dataReady) {
       return;
     }
 
     try {
       // This reads the file and automatically detects the UTF-8 encoding.
       let inputStream = new FileInputStream(new FileUtils.File(this.path),
                                             FileUtils.MODE_RDONLY,
-                                            FileUtils.PERMS_FILE, 0)
+                                            FileUtils.PERMS_FILE, 0);
       try {
         let json = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON);
         this.data = json.decodeFromStream(inputStream,
                                           inputStream.available());
       } finally {
         inputStream.close();
       }
     } catch (ex) {
--- a/toolkit/components/passwordmgr/OSCrypto_win.js
+++ b/toolkit/components/passwordmgr/OSCrypto_win.js
@@ -17,17 +17,17 @@ const wintypes = {
   BOOL: ctypes.bool,
   BYTE: ctypes.uint8_t,
   DWORD: ctypes.uint32_t,
   PBYTE: ctypes.unsigned_char.ptr,
   PCHAR: ctypes.char.ptr,
   PDWORD: ctypes.uint32_t.ptr,
   PVOID: ctypes.voidptr_t,
   WORD: ctypes.uint16_t,
-}
+};
 
 function OSCrypto() {
   this._structs = {};
   this._functions = new Map();
   this._libs = new Map();
   this._structs.DATA_BLOB = new ctypes.StructType("DATA_BLOB",
                                                   [
                                                     {cbData: wintypes.DWORD},
--- a/toolkit/components/passwordmgr/content/passwordManager.js
+++ b/toolkit/components/passwordmgr/content/passwordManager.js
@@ -51,17 +51,17 @@ let signonReloadDisplay = {
           if (filterField && filterField.value != "") {
             FilterPasswords();
           }
           break;
       }
       Services.obs.notifyObservers(null, "passwordmgr-dialog-updated", null);
     }
   }
-}
+};
 
 // Formatter for localization.
 let dateFormatter = new Intl.DateTimeFormat(undefined,
                       { day: "numeric", month: "short", year: "numeric" });
 let dateAndTimeFormatter = new Intl.DateTimeFormat(undefined,
                              { day: "numeric", month: "short", year: "numeric",
                                hour: "numeric", minute: "numeric" });
 
--- a/toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger.js
+++ b/toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger.js
@@ -563,17 +563,17 @@ add_task(function* test_noShowPasswordOn
     let notif = getCaptureDoorhanger("password-save");
     let { panel } = PopupNotifications;
 
     info("Hiding popup.");
     let promiseHidden = BrowserTestUtils.waitForEvent(panel, "popuphidden");
     panel.hidePopup();
     yield promiseHidden;
 
-    info("Clicking on anchor to reshow popup.")
+    info("Clicking on anchor to reshow popup.");
     let promiseShown = BrowserTestUtils.waitForEvent(panel, "popupshown");
     notif.anchorElement.click();
     yield promiseShown;
 
     let passwordVisiblityToggle = panel.querySelector("#password-notification-visibilityToggle");
     is(passwordVisiblityToggle.hidden, true, "Check that the Show Password field is Hidden");
   });
 });
--- a/toolkit/components/passwordmgr/test/browser/browser_passwordmgr_switchtab.js
+++ b/toolkit/components/passwordmgr/test/browser/browser_passwordmgr_switchtab.js
@@ -16,27 +16,27 @@ function test() {
       var domwindow = window.QueryInterface(Ci.nsIInterfaceRequestor)
                             .getInterface(Ci.nsIDOMWindow);
       waitForFocus(() => {
         is(domwindow.document.location.href, PROMPT_URL, "Should have seen a prompt window");
         is(domwindow.args.promptType, "promptUserAndPass", "Should be an authenticate prompt");
 
         is(gBrowser.selectedTab, tab, "Should have selected the new tab");
 
-        domwindow.document.documentElement.cancelDialog()
+        domwindow.document.documentElement.cancelDialog();
       }, domwindow);
     },
 
     onCloseWindow: function() {
     }
-  }
+  };
 
   Services.wm.addListener(listener);
   registerCleanupFunction(() => {
     Services.wm.removeListener(listener);
     gBrowser.removeTab(tab);
-  })
+  });
 
   tab.linkedBrowser.addEventListener("load", () => {
     finish();
   }, true);
   tab.linkedBrowser.loadURI("http://example.com/browser/toolkit/components/passwordmgr/test/browser/authenticate.sjs");
 }
--- a/toolkit/components/passwordmgr/test/mochitest/test_autofill_https_upgrade.html
+++ b/toolkit/components/passwordmgr/test/mochitest/test_autofill_https_upgrade.html
@@ -53,17 +53,17 @@ function* prepareLoginsAndProcessForm(ur
   }
 
   iframe.src = url;
   yield promiseFormsProcessed();
 }
 
 add_task(function* setup() {
   yield SpecialPowers.pushPrefEnv({"set": [["signon.schemeUpgrades", true]]});
-})
+});
 
 add_task(function* test_simpleNoDupesNoAction() {
   yield prepareLoginsAndProcessForm("https://example.com" + MISSING_ACTION_PATH, [
     new nsLoginInfo("http://example.com", "http://example.com", null,
                     "name2", "pass2", "uname", "pword"),
   ]);
 
   checkACForm("name2", "pass2");
--- a/toolkit/components/passwordmgr/test/mochitest/test_basic_form_2pw_2.html
+++ b/toolkit/components/passwordmgr/test/mochitest/test_basic_form_2pw_2.html
@@ -81,17 +81,17 @@ function getFormSubmitButton(formNum) {
   // invoke the form onsubmit handler.
   var button = form.firstChild;
   while (button && button.type != "submit") { button = button.nextSibling; }
   ok(button != null, "getting form submit button");
 
   return button;
 }
 
-runChecksAfterCommonInit(startTest)
+runChecksAfterCommonInit(startTest);
 
 </script>
 </pre>
 <div id="content" style="display: none">
   <form id="form1" onsubmit="return checkSubmit(1)" action="http://newuser.com">
     <input  type="text"     name="uname">
     <input  type="password" name="pword">
     <input  type="password" name="qword">
--- a/toolkit/components/passwordmgr/test/mochitest/test_bug_627616.html
+++ b/toolkit/components/passwordmgr/test/mochitest/test_bug_627616.html
@@ -22,17 +22,17 @@
                       "user=user1name&" +
                       "pass=user1pass&" +
                       "realm=mochirealm&" +
                       extra || "");
       xhr.onloadend = function() {
         is(xhr.status, expectedStatus, "xhr.status");
         is(xhr.statusText, expectedText, "xhr.statusText");
         runNextTest();
-      }
+      };
       return xhr;
     }
 
     function testNonAnonymousCredentials() {
       var xhr = makeXHR(200, "OK");
       xhr.send();
     }
 
--- a/toolkit/components/passwordmgr/test/mochitest/test_bug_776171.html
+++ b/toolkit/components/passwordmgr/test/mochitest/test_bug_776171.html
@@ -31,21 +31,21 @@ function doxhr(URL, user, pass, next) {
   var xhr = new XMLHttpRequest();
   if (user && pass)
     xhr.open("POST", URL, true, user, pass);
   else
     xhr.open("POST", URL, true);
   xhr.onload = function() {
     is(xhr.status, 200, "Got status 200");
     next();
-  }
+  };
   xhr.onerror = function() {
     ok(false, "request passed");
     finishTest();
-  }
+  };
   xhr.send();
 }
 
 function startTest() {
   doxhr("auth2/authenticate.sjs?user=user1&pass=pass1&realm=realm1", "user1", "pass1", function() {
     doxhr("auth2", null, null, function() {
       doxhr("authenticate.sjs?user=user1&pass=pass1&realm=realm1", "user1", "pass1", SimpleTest.finish);
     });
--- a/toolkit/components/passwordmgr/test/mochitest/test_prompt_promptAuth_proxy.html
+++ b/toolkit/components/passwordmgr/test/mochitest/test_prompt_promptAuth_proxy.html
@@ -81,17 +81,17 @@ proxyChannelListener.prototype = {
   },
   onStopRequest: function(request, context, status) { }
 };
 
 var resolveCallback = SpecialPowers.wrapCallbackObject({
   QueryInterface : function (iid) {
     const interfaces = [Ci.nsIProtocolProxyCallback, Ci.nsISupports];
 
-    if (!interfaces.some( function(v) { return iid.equals(v) } ))
+    if (!interfaces.some( function(v) { return iid.equals(v); } ))
       throw SpecialPowers.Cr.NS_ERROR_NO_INTERFACE;
     return this;
   },
 
   onProxyAvailable : function (req, uri, pi, status) {
     initLogins(pi);
 
     // I'm cheating a bit here... We should probably do some magic foo to get
@@ -132,17 +132,17 @@ function startup() {
   pps.asyncResolve(channel, 0, resolveCallback);
 }
 
 startup();
 
 add_task(function* setup() {
   info("Waiting for startup to complete...");
   yield startupComplete;
-})
+});
 
 add_task(function* test_noAutologin() {
   // test proxy login (default = no autologin), make sure it prompts.
   state = {
     msg         : "The proxy moz-proxy://127.0.0.1:8888 is requesting a username and password.\n\nThe site says: “Proxy Realm”",
     title       : "Authentication Required",
     textValue   : "proxuser",
     passValue   : "proxpass",
--- a/toolkit/components/passwordmgr/test/mochitest/test_xhr_2.html
+++ b/toolkit/components/passwordmgr/test/mochitest/test_xhr_2.html
@@ -27,21 +27,21 @@ function doxhr(URL, user, pass, code, ne
   var xhr = new XMLHttpRequest();
   if (user && pass)
     xhr.open("POST", URL, true, user, pass);
   else
     xhr.open("POST", URL, true);
   xhr.onload = function() {
     is(xhr.status, code, "expected response code " + code);
     next();
-  }
+  };
   xhr.onerror = function() {
     ok(false, "request passed");
     finishTest();
-  }
+  };
   xhr.send();
 }
 
 function startTest() {
   doxhr("authenticate.sjs?user=dummy&pass=pass1&realm=realm1&formauth=1", "dummy", "dummy", 403, function() {
     doxhr("authenticate.sjs?user=dummy&pass=pass1&realm=realm1&formauth=1", "dummy", "pass1", 200, finishTest);
   });
 }
--- a/toolkit/components/passwordmgr/test/prompt_common.js
+++ b/toolkit/components/passwordmgr/test/prompt_common.js
@@ -25,17 +25,17 @@ function startCallbackTimer() {
 }
 
 
 var observer = SpecialPowers.wrapCallbackObject({
     QueryInterface : function (iid) {
         const interfaces = [Ci.nsIObserver,
                             Ci.nsISupports, Ci.nsISupportsWeakReference];
 
-        if (!interfaces.some( function(v) { return iid.equals(v) } ))
+        if (!interfaces.some( function(v) { return iid.equals(v); } ))
             throw SpecialPowers.Components.results.NS_ERROR_NO_INTERFACE;
         return this;
     },
 
     observe : function (subject, topic, data) {
         var doc = getDialogDoc();
         if (doc)
             handleDialog(doc, testNum);
--- a/toolkit/components/passwordmgr/test/test_prompt_async.html
+++ b/toolkit/components/passwordmgr/test/test_prompt_async.html
@@ -37,17 +37,17 @@
          */
         dialogMonitor.prototype = SpecialPowers.wrapCallbackObject({
             windowsOpen : 0,
             windowsRegistered : 0,
 
             QueryInterface : function (iid) {
                 const interfaces = [Ci.nsIObserver, Ci.nsISupports];
 
-                if (!interfaces.some( function(v) { return iid.equals(v) } ))
+                if (!interfaces.some( function(v) { return iid.equals(v); } ))
                         throw SpecialPowers.Cr.NS_ERROR_NO_INTERFACE;
                 return this;
             },
 
             observe: function(subject, topic, data) {
                 if (topic === "domwindowopened") {
                     this.windowsOpen++;
                     this.windowsRegistered++;
@@ -128,17 +128,17 @@
             monitor.shutdown();
             SimpleTest.finish();
         }
 
 	var resolveCallback = SpecialPowers.wrapCallbackObject({
 	QueryInterface : function (iid) {
 	const interfaces = [Ci.nsIProtocolProxyCallback, Ci.nsISupports];
 
-        if (!interfaces.some( function(v) { return iid.equals(v) } ))
+        if (!interfaces.some( function(v) { return iid.equals(v); } ))
           throw SpecialPowers.Cr.NS_ERROR_NO_INTERFACE;
 	  return this;
 	},
 
 	onProxyAvailable : function (req, uri, pi, status) {
           initLogins(pi);
           doTest(testNum);
 	}
@@ -166,17 +166,17 @@
             iframe1 = document.getElementById("iframe1");
             iframe2a = document.getElementById("iframe2a");
             iframe2b = document.getElementById("iframe2b");
             iframe1.onload = onFrameLoad;
             iframe2a.onload = onFrameLoad;
             iframe2b.onload = onFrameLoad;
 
 	    startup();
-        }
+        };
 
         var expectedLoads;
         var expectedDialogs;
         function onFrameLoad()
         {
             if (--expectedLoads == 0) {
                 // All pages expected to load has loaded, continue with the next test
                 ok(true, "Expected frames loaded");
--- a/toolkit/components/passwordmgr/test/unit/test_OSCrypto_win.js
+++ b/toolkit/components/passwordmgr/test/unit/test_OSCrypto_win.js
@@ -64,14 +64,14 @@ add_task(function test_decryptData_encry
   let keys = [null, "a", "keys", "abcdedf", "pass", "https://bugzilla.mozilla.org/page.cgi",
               "https://login.live.com/login.srf"];
   for (let key of keys) {
     decryptEncryptTest(key);
   }
   let url = "https://twitter.com/";
   let value = [1, 0, 0, 0, 208, 140, 157, 223, 1, 21, 209, 17, 140, 122, 0, 192, 79, 194, 151, 235, 1, 0, 0, 0, 254, 58, 230, 75, 132, 228, 181, 79, 184, 160, 37, 106, 201, 29, 42, 152, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 16, 102, 0, 0, 0, 1, 0, 0, 32, 0, 0, 0, 90, 136, 17, 124, 122, 57, 178, 24, 34, 86, 209, 198, 184, 107, 58, 58, 32, 98, 61, 239, 129, 101, 56, 239, 114, 159, 139, 165, 183, 40, 183, 85, 0, 0, 0, 0, 14, 128, 0, 0, 0, 2, 0, 0, 32, 0, 0, 0, 147, 170, 34, 21, 53, 227, 191, 6, 201, 84, 106, 31, 57, 227, 46, 127, 219, 199, 80, 142, 37, 104, 112, 223, 26, 165, 223, 55, 176, 89, 55, 37, 112, 0, 0, 0, 98, 70, 221, 109, 5, 152, 46, 11, 190, 213, 226, 58, 244, 20, 180, 217, 63, 155, 227, 132, 7, 151, 235, 6, 37, 232, 176, 182, 141, 191, 251, 50, 20, 123, 53, 11, 247, 233, 112, 121, 130, 27, 168, 68, 92, 144, 192, 7, 12, 239, 53, 217, 253, 155, 54, 109, 236, 216, 225, 245, 79, 234, 165, 225, 104, 36, 77, 13, 195, 237, 143, 165, 100, 107, 230, 70, 54, 19, 179, 35, 8, 101, 93, 202, 121, 210, 222, 28, 93, 122, 36, 84, 185, 249, 238, 3, 102, 149, 248, 94, 137, 16, 192, 22, 251, 220, 22, 223, 16, 58, 104, 187, 64, 0, 0, 0, 70, 72, 15, 119, 144, 66, 117, 203, 190, 82, 131, 46, 111, 130, 238, 191, 170, 63, 186, 117, 46, 88, 171, 3, 94, 146, 75, 86, 243, 159, 63, 195, 149, 25, 105, 141, 42, 217, 108, 18, 63, 62, 98, 182, 241, 195, 12, 216, 152, 230, 176, 253, 202, 129, 41, 185, 135, 111, 226, 92, 27, 78, 27, 198];
 
-  let arr1 = crypto.arrayToString(value)
+  let arr1 = crypto.arrayToString(value);
   let arr2 = crypto.stringToArray(crypto.decryptData(crypto.encryptData(arr1, url), url));
   for (let i = 0; i < arr1.length; i++) {
     do_check_eq(arr2[i], value[i]);
   }
 });
--- a/toolkit/components/passwordmgr/test/unit/test_logins_search.js
+++ b/toolkit/components/passwordmgr/test/unit/test_logins_search.js
@@ -80,17 +80,17 @@ function checkAllSearches(aQuery, aExpec
   // Test findLogins.
   let outCount = {};
   let logins = Services.logins.findLogins(outCount, hostname, formSubmitURL,
                                           httpRealm);
   do_check_eq(outCount.value, expectedLogins.length);
   LoginTestUtils.assertLoginListsEqual(logins, expectedLogins);
 
   // Test countLogins.
-  let count = Services.logins.countLogins(hostname, formSubmitURL, httpRealm)
+  let count = Services.logins.countLogins(hostname, formSubmitURL, httpRealm);
   do_check_eq(count, expectedLogins.length);
 
   // Test searchLogins.
   checkSearchLogins(aQuery, aExpectedCount);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 //// Tests
--- a/toolkit/components/passwordmgr/test/unit/test_notifications.js
+++ b/toolkit/components/passwordmgr/test/unit/test_notifications.js
@@ -62,17 +62,17 @@ var testuser1 = new LoginInfo("http://te
 var testuser2 = new LoginInfo("http://testhost2", "", null,
     "dummydude2", "itsasecret2", "put_user2_here", "put_pw2_here");
 
 Services.obs.addObserver(TestObserver, "passwordmgr-storage-changed", false);
 
 
 /* ========== 1 ========== */
 testnum = 1;
-testdesc = "Initial connection to storage module"
+testdesc = "Initial connection to storage module";
 
 /* ========== 2 ========== */
 testnum++;
 testdesc = "addLogin";
 
 expectedNotification = "addLogin";
 expectedData = testuser1;
 Services.logins.addLogin(testuser1);
--- a/toolkit/components/passwordmgr/test/unit/test_storage_mozStorage.js
+++ b/toolkit/components/passwordmgr/test/unit/test_storage_mozStorage.js
@@ -151,17 +151,17 @@ testuser4.init("http://test.gov", "http:
                "testuser1", "testpass2", "u4", "p4");
 var testuser5 = new nsLoginInfo;
 testuser5.init("http://test.gov", "http://test.gov", null,
                "testuser2", "testpass1", "u5", "p5");
 
 
 /* ========== 1 ========== */
 testnum++;
-testdesc = "Test downgrade from v999 storage"
+testdesc = "Test downgrade from v999 storage";
 
 yield* copyFile("signons-v999.sqlite");
 // Verify the schema version in the test file.
 dbConnection = openDB("signons-v999.sqlite");
 do_check_eq(999, dbConnection.schemaVersion);
 dbConnection.close();
 
 storage = reloadStorage(OUTDIR, "signons-v999.sqlite");
@@ -172,17 +172,17 @@ checkStorageData(storage, ["https://disa
 dbConnection = openDB("signons-v999.sqlite");
 do_check_eq(CURRENT_SCHEMA, dbConnection.schemaVersion);
 dbConnection.close();
 
 deleteFile(OUTDIR, "signons-v999.sqlite");
 
 /* ========== 2 ========== */
 testnum++;
-testdesc = "Test downgrade from incompat v999 storage"
+testdesc = "Test downgrade from incompat v999 storage";
 // This file has a testuser999/testpass999, but is missing an expected column
 
 var origFile = OS.Path.join(OUTDIR, "signons-v999-2.sqlite");
 var failFile = OS.Path.join(OUTDIR, "signons-v999-2.sqlite.corrupt");
 
 // Make sure we always start clean in a clean state.
 yield* copyFile("signons-v999-2.sqlite");
 yield OS.File.remove(failFile);
@@ -193,17 +193,17 @@ Assert.throws(() => reloadStorage(OUTDIR
 // Check to ensure the DB file was renamed to .corrupt.
 do_check_false(yield OS.File.exists(origFile));
 do_check_true(yield OS.File.exists(failFile));
 
 yield OS.File.remove(failFile);
 
 /* ========== 3 ========== */
 testnum++;
-testdesc = "Test upgrade from v1->v2 storage"
+testdesc = "Test upgrade from v1->v2 storage";
 
 yield* copyFile("signons-v1.sqlite");
 // Sanity check the test file.
 dbConnection = openDB("signons-v1.sqlite");
 do_check_eq(1, dbConnection.schemaVersion);
 dbConnection.close();
 
 storage = reloadStorage(OUTDIR, "signons-v1.sqlite");
@@ -252,17 +252,17 @@ do_check_eq("{13d9bfdc-572a-4d4e-9436-68
 guid = getGUIDforID(dbConnection, 3);
 do_check_true(isGUID.test(guid));
 dbConnection.close();
 
 deleteFile(OUTDIR, "signons-v1v2.sqlite");
 
 /* ========== 5 ========== */
 testnum++;
-testdesc = "Test upgrade from v2->v3 storage"
+testdesc = "Test upgrade from v2->v3 storage";
 
 yield* copyFile("signons-v2.sqlite");
 // Sanity check the test file.
 dbConnection = openDB("signons-v2.sqlite");
 do_check_eq(2, dbConnection.schemaVersion);
 
 storage = reloadStorage(OUTDIR, "signons-v2.sqlite");
 
@@ -312,17 +312,17 @@ for (let i = 0; i < encTypes.length; i++
     do_check_eq(encTypes[i], getEncTypeForID(dbConnection, i + 1));
 dbConnection.close();
 
 deleteFile(OUTDIR, "signons-v2v3.sqlite");
 
 
 /* ========== 7 ========== */
 testnum++;
-testdesc = "Test upgrade from v3->v4 storage"
+testdesc = "Test upgrade from v3->v4 storage";
 
 yield* copyFile("signons-v3.sqlite");
 // Sanity check the test file.
 dbConnection = openDB("signons-v3.sqlite");
 do_check_eq(3, dbConnection.schemaVersion);
 
 storage = reloadStorage(OUTDIR, "signons-v3.sqlite");
 do_check_eq(CURRENT_SCHEMA, dbConnection.schemaVersion);
@@ -339,17 +339,17 @@ for (var i = 0; i < 2; i++) {
     do_check_eq(1, logins[i].timesUsed);
     LoginTestUtils.assertTimeIsAboutNow(logins[i].timeCreated);
     LoginTestUtils.assertTimeIsAboutNow(logins[i].timeLastUsed);
     LoginTestUtils.assertTimeIsAboutNow(logins[i].timePasswordChanged);
 }
 
 /* ========== 8 ========== */
 testnum++;
-testdesc = "Test upgrade from v3->v4->v3 storage"
+testdesc = "Test upgrade from v3->v4->v3 storage";
 
 yield* copyFile("signons-v3v4.sqlite");
 // Sanity check the test file.
 dbConnection = openDB("signons-v3v4.sqlite");
 do_check_eq(3, dbConnection.schemaVersion);
 
 storage = reloadStorage(OUTDIR, "signons-v3v4.sqlite");
 do_check_eq(CURRENT_SCHEMA, dbConnection.schemaVersion);
@@ -379,32 +379,32 @@ do_check_eq(1262049951275, t1.timePasswo
 do_check_eq(1, t2.timesUsed);
 LoginTestUtils.assertTimeIsAboutNow(t2.timeCreated);
 LoginTestUtils.assertTimeIsAboutNow(t2.timeLastUsed);
 LoginTestUtils.assertTimeIsAboutNow(t2.timePasswordChanged);
 
 
 /* ========== 9 ========== */
 testnum++;
-testdesc = "Test upgrade from v4 storage"
+testdesc = "Test upgrade from v4 storage";
 
 yield* copyFile("signons-v4.sqlite");
 // Sanity check the test file.
 dbConnection = openDB("signons-v4.sqlite");
 do_check_eq(4, dbConnection.schemaVersion);
 do_check_false(dbConnection.tableExists("moz_deleted_logins"));
 
 storage = reloadStorage(OUTDIR, "signons-v4.sqlite");
 do_check_eq(CURRENT_SCHEMA, dbConnection.schemaVersion);
 do_check_true(dbConnection.tableExists("moz_deleted_logins"));
 
 
 /* ========== 10 ========== */
 testnum++;
-testdesc = "Test upgrade from v4->v5->v4 storage"
+testdesc = "Test upgrade from v4->v5->v4 storage";
 
 yield copyFile("signons-v4v5.sqlite");
 // Sanity check the test file.
 dbConnection = openDB("signons-v4v5.sqlite");
 do_check_eq(4, dbConnection.schemaVersion);
 do_check_true(dbConnection.tableExists("moz_deleted_logins"));
 
 storage = reloadStorage(OUTDIR, "signons-v4v5.sqlite");
@@ -446,32 +446,32 @@ LoginTestUtils.assertDisabledHostsEqual(
 
 // Remove all disabled hosts from the permission manager before test ends
 for (let host of disabledHosts) {
   setLoginSavingEnabled(host, true);
 }
 
 /* ========== 12 ========== */
 testnum++;
-testdesc = "Create nsILoginInfo instances for testing with"
+testdesc = "Create nsILoginInfo instances for testing with";
 
 testuser1 = new nsLoginInfo;
 testuser1.init("http://dummyhost.mozilla.org", "", null,
     "dummydude", "itsasecret", "put_user_here", "put_pw_here");
 
 
 /*
  * ---------------------- DB Corruption ----------------------
  * Try to initialize with a corrupt database file. This should create a backup
  * file, then upon next use create a new database file.
  */
 
 /* ========== 13 ========== */
 testnum++;
-testdesc = "Corrupt database and backup"
+testdesc = "Corrupt database and backup";
 
 const filename = "signons-c.sqlite";
 const filepath = OS.Path.join(OS.Constants.Path.profileDir, filename);
 
 yield OS.File.copy(do_get_file("data/corruptDB.sqlite").path, filepath);
 
 // will init mozStorage module with corrupt database, init should fail
 Assert.throws(