Bug 1245649: Turn on use-isnan, no-unexpected-multiline, no-octal and no-self-compare. r=MattN
authorDave Townsend <dtownsend@oxymoronical.com>
Wed, 03 Feb 2016 18:21:30 -0800
changeset 329081 f1d82662fe938895954f00e0ec247373b2e96d8c
parent 329080 f3018a3c2de52184b7a49a9e61c1dfb7817d475a
child 329082 3c4c76215a0d2258a4125b0b84c6cea2f00a9426
push id10463
push userdtownsend@mozilla.com
push dateFri, 05 Feb 2016 03:02:33 +0000
reviewersMattN
bugs1245649
milestone47.0a1
Bug 1245649: Turn on use-isnan, no-unexpected-multiline, no-octal and no-self-compare. r=MattN
browser/components/test/browser_bug538331.js
toolkit/.eslintrc
toolkit/components/contentprefs/tests/unit/test_contentPrefs.js
toolkit/components/contentprefs/tests/unit_cps2/test_observers.js
toolkit/components/downloads/test/unit/test_bug_406857.js
toolkit/components/downloads/test/unit/test_bug_420230.js
toolkit/components/downloads/test/unit/test_privatebrowsing.js
toolkit/components/downloads/test/unit/test_privatebrowsing_cancel.js
toolkit/components/filepicker/content/filepicker.js
toolkit/components/microformats/test/static/javascript/chai.js
toolkit/components/places/tests/bookmarks/test_477583_json-backup-in-future.js
toolkit/components/places/tests/bookmarks/test_818587_compress-bookmarks-backups.js
toolkit/components/places/tests/favicons/test_replaceFaviconData.js
toolkit/components/places/tests/favicons/test_replaceFaviconDataFromDataURL.js
toolkit/content/tests/browser/browser_save_resend_postdata.js
toolkit/content/tests/chrome/RegisterUnregisterChrome.js
toolkit/crashreporter/test/browser/browser_clearReports.js
toolkit/crashreporter/test/browser/head.js
toolkit/crashreporter/test/unit/head_crashreporter.js
toolkit/modules/InlineSpellChecker.jsm
toolkit/modules/tests/xpcshell/test_FileUtils.js
toolkit/mozapps/downloads/tests/unit/test_DownloadPaths.js
toolkit/mozapps/extensions/internal/GMPProvider.jsm
--- a/browser/components/test/browser_bug538331.js
+++ b/browser/components/test/browser_bug538331.js
@@ -403,17 +403,17 @@ function reloadUpdateManagerData()
 {
   Cc["@mozilla.org/updates/update-manager;1"].getService(Ci.nsIUpdateManager).
   QueryInterface(Ci.nsIObserver).observe(null, "um-reload-update-data", "");
 }
 
 
 function writeUpdatesToXMLFile(aText)
 {
-  const PERMS_FILE = 0644;
+  const PERMS_FILE = 0o644;
 
   const MODE_WRONLY   = 0x02;
   const MODE_CREATE   = 0x08;
   const MODE_TRUNCATE = 0x20;
 
   let file = Cc["@mozilla.org/file/directory_service;1"].
              getService(Ci.nsIProperties).
              get("UpdRootD", Ci.nsIFile);
--- a/toolkit/.eslintrc
+++ b/toolkit/.eslintrc
@@ -114,23 +114,23 @@
 
     // Use {} instead of new Object()
     // "no-new-object": 2,
 
     // No Math() or JSON()
     "no-obj-calls": 2,
 
     // No octal literals
-    // "no-octal": 2,
+    "no-octal": 2,
 
     // No redeclaring variables
     "no-redeclare": 2,
 
     // No unnecessary comparisons
-    // "no-self-compare": 2,
+    "no-self-compare": 2,
 
     // No declaring variables from an outer scope
     // "no-shadow": 2,
 
     // No declaring variables that hide things like arguments
     // "no-shadow-restricted-names": 2,
 
     // No spaces between function name and parentheses
@@ -138,17 +138,17 @@
 
     // No trailing whitespace
     "no-trailing-spaces": 2,
 
     // No using undeclared variables
     // "no-undef": 2,
 
     // Error on newline where a semicolon is needed
-    // "no-unexpected-multiline": 2,
+    "no-unexpected-multiline": 2,
 
     // No unreachable statements
     // "no-unreachable": 2,
 
     // No expressions where a statement is expected
     // "no-unused-expressions": 2,
 
     // No declaring variables that are never used
@@ -183,14 +183,14 @@
 
     // Require spaces after return, throw and case
     // "space-return-throw-case": 2,
 
     // ++ and -- should not need spacing
     // "space-unary-ops": [2, { "words": true, "nonwords": false }],
 
     // No comparisons to NaN
-    // "use-isnan": 2,
+    "use-isnan": 2,
 
     // Only check typeof against valid results
     "valid-typeof": 2,
   }
 }
--- a/toolkit/components/contentprefs/tests/unit/test_contentPrefs.js
+++ b/toolkit/components/contentprefs/tests/unit/test_contentPrefs.js
@@ -59,17 +59,17 @@ function run_test() {
   // Open a corrupted database.
   {
     let dbFile = ContentPrefTest.deleteDatabase();
     let backupDBFile = ContentPrefTest.deleteBackupDatabase();
 
     // Create a corrupted database.
     let foStream = Cc["@mozilla.org/network/file-output-stream;1"].
                    createInstance(Ci.nsIFileOutputStream);
-    foStream.init(dbFile, 0x02 | 0x08 | 0x20, 0666, 0);
+    foStream.init(dbFile, 0x02 | 0x08 | 0x20, 0o666, 0);
     let garbageData = "garbage that makes SQLite think the file is corrupted";
     foStream.write(garbageData, garbageData.length);
     foStream.close();
 
     // Get the service and make sure it backs up and recreates the database.
     let cps = Cc["@mozilla.org/content-pref/service;1"].
               createInstance(Ci.nsIContentPrefService);
     do_check_true(backupDBFile.exists());
--- a/toolkit/components/contentprefs/tests/unit_cps2/test_observers.js
+++ b/toolkit/components/contentprefs/tests/unit_cps2/test_observers.js
@@ -83,17 +83,17 @@ var tests = [
     observerArgsOK(args.bar, []);
   },
 
   function* observerForName_removeAllDomainsSince() {
     yield setWithDate("a.com", "foo", 1, 100);
     yield setWithDate("b.com", "foo", 2, 200);
     yield setWithDate("c.com", "foo", 3, 300);
 
-    yield setWithDate("a.com", "bar", 1, 000);
+    yield setWithDate("a.com", "bar", 1, 0);
     yield setWithDate("b.com", "bar", 2, 100);
     yield setWithDate("c.com", "bar", 3, 200);
     yield setGlobal("foo", 2);
 
     yield cps.removeAllDomainsSince(200, null, makeCallback());
 
     let args = yield on("Removed", ["foo", "bar", null]);
 
--- a/toolkit/components/downloads/test/unit/test_bug_406857.js
+++ b/toolkit/components/downloads/test/unit/test_bug_406857.js
@@ -26,17 +26,17 @@ function run_test()
   // Download from the test http server
   stmt.bindByIndex(0, "http://localhost:"+ httpserv.identity.primaryPort +
                       "/httpd.js");
 
   // Download to a temp local file
   let file = Cc["@mozilla.org/file/directory_service;1"].
              getService(Ci.nsIProperties).get("TmpD", Ci.nsIFile);
   file.append("retry");
-  file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
   stmt.bindByIndex(1, Cc["@mozilla.org/network/io-service;1"].
     getService(Ci.nsIIOService).newFileURI(file).spec);
 
   // Start it as canceled
   stmt.bindByIndex(2, dm.DOWNLOAD_CANCELED);
 
   // Add a referrer to make sure it doesn't disappear
   let referrer = "http://referrer.goes/here";
--- a/toolkit/components/downloads/test/unit/test_bug_420230.js
+++ b/toolkit/components/downloads/test/unit/test_bug_420230.js
@@ -25,17 +25,17 @@ function run_test()
                            nsIWBP.PERSIST_FLAGS_BYPASS_CACHE |
                            nsIWBP.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION;
 
     // Download to a temp local file
     let file = dirSvc.get("ProfD", Ci.nsIFile);
     file.append("policychecktest.png");
     if (file.exists())
       file.remove(false);
-    file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+    file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
 
     gDownloadCount++;
 
     var dl = dm.addDownload(Ci.nsIDownloadManager.DOWNLOAD_TYPE_DOWNLOAD,
                             createURI("data:image/png;base64,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"),
                             createURI(file), null, null,
                             Math.round(Date.now() * 1000), null, persist, false);
 
--- a/toolkit/components/downloads/test/unit/test_privatebrowsing.js
+++ b/toolkit/components/downloads/test/unit/test_privatebrowsing.js
@@ -263,23 +263,23 @@ function run_test() {
                           httpserv.identity.primaryPort +
                           "/head_download_manager.js";
   const downloadCDest = "download-file-C";
   const downloadCName = "download-C";
 
   // Create all target files
   let fileA = tmpDir.clone();
   fileA.append(downloadADest);
-  fileA.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  fileA.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
   let fileB = tmpDir.clone();
   fileB.append(downloadBDest);
-  fileB.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  fileB.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
   let fileC = tmpDir.clone();
   fileC.append(downloadCDest);
-  fileC.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  fileC.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
 
   // use js closures to access dlC
   let dlC;
 
   // Create Download-A
   let dlA = addDownload(httpserv, {
     isPrivate: false,
     targetFile: fileA,
--- a/toolkit/components/downloads/test/unit/test_privatebrowsing_cancel.js
+++ b/toolkit/components/downloads/test/unit/test_privatebrowsing_cancel.js
@@ -222,26 +222,26 @@ function run_test() {
   // properties of Download-G
   const downloadGSource = "http://localhost:" + PORT + "/noresume";
   const downloadGDest = "download-file-G";
   const downloadGName = "download-G";
 
   // Create all target files
   let fileD = tmpDir.clone();
   fileD.append(downloadDDest);
-  fileD.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  fileD.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
   let fileE = tmpDir.clone();
   fileE.append(downloadEDest);
-  fileE.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  fileE.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
   let fileF = tmpDir.clone();
   fileF.append(downloadFDest);
-  fileF.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  fileF.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
   let fileG = tmpDir.clone();
   fileG.append(downloadGDest);
-  fileG.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  fileG.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
 
   // Create Download-D
   let dlD = addDownload(httpserv, {
     isPrivate: true,
     targetFile: fileD,
     sourceURI: downloadDSource,
     downloadName: downloadDName
   });
--- a/toolkit/components/filepicker/content/filepicker.js
+++ b/toolkit/components/filepicker/content/filepicker.js
@@ -676,17 +676,17 @@ function newDir() {
         showErrorDialog("errorCreateNewDirTitle",
                         "errorCreateNewDirPermissionMessage",
                         parent);
         return false;
       }
     }
 
     try {
-      file.create(nsIFile.DIRECTORY_TYPE, 0755);
+      file.create(nsIFile.DIRECTORY_TYPE, 0o755);
     } catch (e) {
       showErrorDialog("errorCreateNewDirTitle",
                       "errorCreateNewDirMessage",
                       file);
       return false;
     }
     file.normalize(); // ... in case ".." was used in the path
     gotoDirectory(file);
--- a/toolkit/components/microformats/test/static/javascript/chai.js
+++ b/toolkit/components/microformats/test/static/javascript/chai.js
@@ -3174,19 +3174,17 @@ module.exports = function (chai, util) {
 
   /*!
    * Aliases.
    */
 
   (function alias(name, as){
     assert[as] = assert[name];
     return alias;
-  })
-  ('Throw', 'throw')
-  ('Throw', 'throws');
+  })('Throw', 'throw')('Throw', 'throws');
 };
 
 },{}],6:[function(require,module,exports){
 /*!
  * chai
  * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>
  * MIT Licensed
  */
@@ -4868,17 +4866,17 @@ function deepEqual(a, b, m) {
  *
  * @param {Mixed} a
  * @param {Mixed} b
  * @return {Boolean} equal match
  */
 
 function sameValue(a, b) {
   if (a === b) return a !== 0 || 1 / a === 1 / b;
-  return a !== a && b !== b;
+  return isNaN(a) && isNaN(b);
 }
 
 /*!
  * Compare the types of two given objects and
  * return if they are equal. Note that an Array
  * has a type of `array` (not `object`) and arguments
  * have a type of `arguments` (not `array`/`object`).
  *
--- a/toolkit/components/places/tests/bookmarks/test_477583_json-backup-in-future.js
+++ b/toolkit/components/places/tests/bookmarks/test_477583_json-backup-in-future.js
@@ -26,17 +26,17 @@ function run_test() {
     while (files.hasMoreElements()) {
       let entry = files.getNext().QueryInterface(Ci.nsIFile);
       if (PlacesBackups.filenamesRegex.test(entry.leafName))
         entry.remove(false);
     }
 
     let futureBackupFile = bookmarksBackupDir.clone();
     futureBackupFile.append(name);
-    futureBackupFile.create(Ci.nsILocalFile.NORMAL_FILE_TYPE, 0600);
+    futureBackupFile.create(Ci.nsILocalFile.NORMAL_FILE_TYPE, 0o600);
     do_check_true(futureBackupFile.exists());
 
     do_check_eq((yield PlacesBackups.getBackupFiles()).length, 0);
 
     yield PlacesBackups.create();
     // Check that a backup for today has been created.
     do_check_eq((yield PlacesBackups.getBackupFiles()).length, 1);
     let mostRecentBackupFile = yield PlacesBackups.getMostRecentBackup();
--- a/toolkit/components/places/tests/bookmarks/test_818587_compress-bookmarks-backups.js
+++ b/toolkit/components/places/tests/bookmarks/test_818587_compress-bookmarks-backups.js
@@ -7,17 +7,17 @@
 function run_test() {
   run_next_test();
 }
 
 add_task(function* compress_bookmark_backups_test() {
   let backupFolder = yield PlacesBackups.getBackupFolder();
 
   // Check for jsonlz4 extension
-  let todayFilename = PlacesBackups.getFilenameForDate(new Date(2014, 04, 15), true);
+  let todayFilename = PlacesBackups.getFilenameForDate(new Date(2014, 4, 15), true);
   do_check_eq(todayFilename, "bookmarks-2014-05-15.jsonlz4");
 
   yield PlacesBackups.create();
 
   // Check that a backup for today has been created and the regex works fine for lz4.
   do_check_eq((yield PlacesBackups.getBackupFiles()).length, 1);
   let mostRecentBackupFile = yield PlacesBackups.getMostRecentBackup();
   do_check_neq(mostRecentBackupFile, null);
--- a/toolkit/components/places/tests/favicons/test_replaceFaviconData.js
+++ b/toolkit/components/places/tests/favicons/test_replaceFaviconData.js
@@ -24,17 +24,17 @@ function createFavicon(fileName) {
   let outfile = tempdir.clone();
   outfile.append(fileName);
   try { outfile.remove(false); } catch (e) {}
 
   originalFavicon.file.copyToFollowingLinks(tempdir, fileName);
 
   let stream = Cc["@mozilla.org/network/file-output-stream;1"]
     .createInstance(Ci.nsIFileOutputStream);
-  stream.init(outfile, 0x02 | 0x08 | 0x10, 0600, 0);
+  stream.init(outfile, 0x02 | 0x08 | 0x10, 0o600, 0);
 
   // append some data that sniffers/encoders will ignore that will distinguish
   // the different favicons we'll create
   uniqueFaviconId++;
   let uniqueStr = "uid:" + uniqueFaviconId;
   stream.write(uniqueStr, uniqueStr.length);
   stream.close();
 
--- a/toolkit/components/places/tests/favicons/test_replaceFaviconDataFromDataURL.js
+++ b/toolkit/components/places/tests/favicons/test_replaceFaviconDataFromDataURL.js
@@ -23,17 +23,17 @@ function createFavicon(fileName) {
   let outfile = tempdir.clone();
   outfile.append(fileName);
   try { outfile.remove(false); } catch (e) {}
 
   originalFavicon.file.copyToFollowingLinks(tempdir, fileName);
 
   let stream = Cc["@mozilla.org/network/file-output-stream;1"]
     .createInstance(Ci.nsIFileOutputStream);
-  stream.init(outfile, 0x02 | 0x08 | 0x10, 0600, 0);
+  stream.init(outfile, 0x02 | 0x08 | 0x10, 0o600, 0);
 
   // append some data that sniffers/encoders will ignore that will distinguish
   // the different favicons we'll create
   uniqueFaviconId++;
   let uniqueStr = "uid:" + uniqueFaviconId;
   stream.write(uniqueStr, uniqueStr.length);
   stream.close();
 
--- a/toolkit/content/tests/browser/browser_save_resend_postdata.js
+++ b/toolkit/content/tests/browser/browser_save_resend_postdata.js
@@ -101,17 +101,17 @@ Cc["@mozilla.org/moz/jssubscript-loader;
                  this);
 
 function createTemporarySaveDirectory() {
   var saveDir = Cc["@mozilla.org/file/directory_service;1"]
                   .getService(Ci.nsIProperties)
                   .get("TmpD", Ci.nsIFile);
   saveDir.append("testsavedir");
   if (!saveDir.exists())
-    saveDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0755);
+    saveDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755);
   return saveDir;
 }
 
 /**
  * Reads the contents of the provided short file (up to 1 MiB).
  *
  * @param aFile
  *        nsIFile object pointing to the file to be read.
--- a/toolkit/content/tests/chrome/RegisterUnregisterChrome.js
+++ b/toolkit/content/tests/chrome/RegisterUnregisterChrome.js
@@ -16,17 +16,17 @@ var gPrefs     = Cc["@mozilla.org/prefer
 
 // Create the temporary file in the profile, instead of in TmpD, because
 // we know the mochitest harness kills off the profile when it's done.
 function copyToTemporaryFile(f)
 {
   let tmpd = gDirSvc.get("ProfD", Ci.nsIFile);
   tmpf = tmpd.clone();
   tmpf.append("temp.manifest");
-  tmpf.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0600);
+  tmpf.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o600);
   tmpf.remove(false);
   f.copyTo(tmpd, tmpf.leafName);
   return tmpf;
 }
 
 function* dirIter(directory)
 {
   var ioSvc = Cc["@mozilla.org/network/io-service;1"].
@@ -56,17 +56,17 @@ function getParent(path) {
 function copyDirToTempProfile(path, subdirname) {
 
   if (subdirname === undefined) {
     subdirname = "mochikit-tmp";
   }
 
   let tmpdir = gDirSvc.get("ProfD", Ci.nsIFile);
   tmpdir.append(subdirname);
-  tmpdir.createUnique(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0777);
+  tmpdir.createUnique(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0o777);
 
   let rootDir = getParent(path);
   if (rootDir == "") {
     return tmpdir;
   }
 
   // The SimpleTest directory is hidden
   var files = Array.from(dirIter('file://' + rootDir));
@@ -106,17 +106,17 @@ function createManifestTemporarily(tempD
 {
   gPrefs.setBoolPref(XUL_CACHE_PREF, true);
 
   tempDir.append("temp.manifest");
 
   let foStream = Cc["@mozilla.org/network/file-output-stream;1"]
                    .createInstance(Ci.nsIFileOutputStream);
   foStream.init(tempDir,
-                0x02 | 0x08 | 0x20, 0664, 0); // write, create, truncate
+                0x02 | 0x08 | 0x20, 0o664, 0); // write, create, truncate
   foStream.write(manifestText, manifestText.length);
   foStream.close();
   let tempfile = copyToTemporaryFile(tempDir);
 
   Components.manager.QueryInterface(Ci.nsIComponentRegistrar).
     autoRegister(tempfile);
 
   gChromeReg.refreshSkins();
--- a/toolkit/crashreporter/test/browser/browser_clearReports.js
+++ b/toolkit/crashreporter/test/browser/browser_clearReports.js
@@ -59,43 +59,43 @@ function test() {
   crD.append("Crash Reports");
 
   // Add crashes to submitted dir
   let submitdir = crD.clone();
   submitdir.append("submitted");
 
   let file1 = submitdir.clone();
   file1.append("bp-nontxt");
-  file1.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  file1.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
   let file2 = submitdir.clone();
   file2.append("nonbp-file.txt");
-  file2.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  file2.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
   add_fake_crashes(crD, 5);
 
   // Add crashes to pending dir
   let pendingdir = crD.clone();
   pendingdir.append("pending");
 
   let crashes = add_fake_crashes(crD, 2);
   addPendingCrashreport(crD, crashes[0].date);
   addPendingCrashreport(crD, crashes[1].date);
 
   // Add crashes to reports dir
   let report1 = crD.clone();
   report1.append("NotInstallTime777");
-  report1.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  report1.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
   let report2 = crD.clone();
   report2.append("InstallTime" + Services.appinfo.appBuildID);
-  report2.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  report2.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
   let report3 = crD.clone();
   report3.append("InstallTimeNew");
-  report3.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  report3.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
   let report4 = crD.clone();
   report4.append("InstallTimeOld");
-  report4.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+  report4.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
   report4.lastModifiedTime = Date.now() - 63172000000;
 
   let tab = gBrowser.selectedTab = gBrowser.addTab("about:blank");
 
   registerCleanupFunction(function () {
     cleanup_fake_appdir();
     gBrowser.removeTab(tab);
   });
--- a/toolkit/crashreporter/test/browser/head.js
+++ b/toolkit/crashreporter/test/browser/head.js
@@ -1,15 +1,15 @@
 function create_subdir(dir, subdirname) {
   let subdir = dir.clone();
   subdir.append(subdirname);
   if (subdir.exists()) {
     subdir.remove(true);
   }
-  subdir.create(Ci.nsIFile.DIRECTORY_TYPE, 0755);
+  subdir.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755);
   return subdir;
 }
 
 // need to hold on to this to unregister for cleanup
 var _provider = null;
 
 function make_fake_appdir() {
   // Create a directory inside the profile and register it as UAppData, so
@@ -81,17 +81,17 @@ function add_fake_crashes(crD, count) {
   let date = Date.now() - count * 60000;
   for (let i = 0; i < count; i++) {
     let uuid = uuidGenerator.generateUUID().toString();
     // ditch the {}
     uuid = "bp-" + uuid.substring(1, uuid.length - 2);
     let fn = uuid + ".txt";
     let file = submitdir.clone();
     file.append(fn);
-    file.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);
+    file.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
     file.lastModifiedTime = date;
     results.push({'id': uuid, 'date': date, 'pending': false});
 
     date += 60000;
   }
   // we want them sorted newest to oldest, since that's the order
   // that about:crashes lists them in
   results.sort((a,b) => b.date - a.date);
--- a/toolkit/crashreporter/test/unit/head_crashreporter.js
+++ b/toolkit/crashreporter/test/unit/head_crashreporter.js
@@ -59,17 +59,17 @@ function do_crash(setup, callback, canRe
   args.push('-f', tailfile.path);
 
   let env = Components.classes["@mozilla.org/process/environment;1"]
                               .getService(Components.interfaces.nsIEnvironment);
 
   let crashD = do_get_tempdir();
   crashD.append("crash-events");
   if (!crashD.exists()) {
-    crashD.create(crashD.DIRECTORY_TYPE, 0700);
+    crashD.create(crashD.DIRECTORY_TYPE, 0o700);
   }
 
   env.set("CRASHES_EVENTS_DIR", crashD.path);
 
   try {
       process.run(true, args, args.length);
   }
   catch(ex) {} // on Windows we exit with a -1 status when crashing.
--- a/toolkit/modules/InlineSpellChecker.jsm
+++ b/toolkit/modules/InlineSpellChecker.jsm
@@ -243,18 +243,17 @@ InlineSpellChecker.prototype = {
             // Notify change of dictionary, especially for Thunderbird,
             // which is otherwise not notified any more.
             var view = menu.ownerDocument.defaultView;
             var spellcheckChangeEvent = new view.CustomEvent(
                   "spellcheck-changed", {detail: { dictionary: dictName}});
             menu.ownerDocument.dispatchEvent(spellcheckChangeEvent);
           }
         };
-        item.addEventListener
-          ("command", callback(this, i, sortedList[i].id), true);
+        item.addEventListener("command", callback(this, i, sortedList[i].id), true);
       }
       if (insertBefore)
         menu.insertBefore(item, insertBefore);
       else
         menu.appendChild(item);
     }
     return list.length;
   },
--- a/toolkit/modules/tests/xpcshell/test_FileUtils.js
+++ b/toolkit/modules/tests/xpcshell/test_FileUtils.js
@@ -114,17 +114,17 @@ var openFileOutputStream_defaultFlags = 
 
   let data = "test_default_flags";
   fos.write(data, data.length);
   do_check_true(file.exists());
 
   // No nsIXULRuntime in xpcshell, so use this trick to determine whether we're
   // on Windows.
   if ("@mozilla.org/windows-registry-key;1" in Components.classes) {
-    do_check_eq(file.permissions, 0666);
+    do_check_eq(file.permissions, 0o666);
   } else {
     do_check_eq(file.permissions, FileUtils.PERMS_FILE);
   }
 
   run_next_test();
 };
 
 var openFileOutputStream_modeFlags = function(aKind, aFileName) {
--- a/toolkit/mozapps/downloads/tests/unit/test_DownloadPaths.js
+++ b/toolkit/mozapps/downloads/tests/unit/test_DownloadPaths.js
@@ -24,17 +24,17 @@ Cu.import("resource://gre/modules/Downlo
  * @returns nsIFile pointing to the new or existing directory.
  */
 function createTemporarySaveDirectory()
 {
   var saveDir = Cc["@mozilla.org/file/directory_service;1"].
                 getService(Ci.nsIProperties).get("TmpD", Ci.nsIFile);
   saveDir.append("testsavedir");
   if (!saveDir.exists()) {
-    saveDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0755);
+    saveDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0o755);
   }
   return saveDir;
 }
 
 function testSplitBaseNameAndExtension(aLeafName, [aBase, aExt])
 {
   var [base, ext] = DownloadPaths.splitBaseNameAndExtension(aLeafName);
   do_check_eq(base, aBase);
--- a/toolkit/mozapps/extensions/internal/GMPProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/GMPProvider.jsm
@@ -200,17 +200,17 @@ GMPWrapper.prototype = {
                                          AddonManager.PERM_CAN_DISABLE;
     }
     return permissions;
   },
 
   get updateDate() {
     let time = Number(GMPPrefs.get(GMPPrefs.KEY_PLUGIN_LAST_UPDATE, null,
                                    this._plugin.id));
-    if (time !== NaN && this.isInstalled) {
+    if (!isNaN(time) && this.isInstalled) {
       return new Date(time * 1000)
     }
     return null;
   },
 
   get isCompatible() {
     return true;
   },