Bug 1301287 - Password manager: enable eslint semi rule. r=johannh
authorMatthew Noorenberghe <mozilla@noorenberghe.ca>
Wed, 07 Sep 2016 21:42:49 -0700
changeset 354536 96afe7c272935fbe911c52598bc008477740eb1b
parent 354535 c2f550b205094107816e99c5523b65e0faf701a0
child 354537 1daf7a032230f4850509c7f6d17cb877983743a5
push id6570
push userraliiev@mozilla.com
push dateMon, 14 Nov 2016 12:26:13 +0000
treeherdermozilla-beta@f455459b2ae5 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjohannh
bugs1301287
milestone51.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
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(