summaryrefslogtreecommitdiffstats
path: root/comm/mail/base/test/unit/test_mailGlue_distribution.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/base/test/unit/test_mailGlue_distribution.js')
-rw-r--r--comm/mail/base/test/unit/test_mailGlue_distribution.js120
1 files changed, 120 insertions, 0 deletions
diff --git a/comm/mail/base/test/unit/test_mailGlue_distribution.js b/comm/mail/base/test/unit/test_mailGlue_distribution.js
new file mode 100644
index 0000000000..0eb1bc9574
--- /dev/null
+++ b/comm/mail/base/test/unit/test_mailGlue_distribution.js
@@ -0,0 +1,120 @@
+var { TBDistCustomizer } = ChromeUtils.import(
+ "resource:///modules/TBDistCustomizer.jsm"
+);
+
+function run_test() {
+ do_test_pending();
+
+ Services.locale.requestedLocales = ["en-US"];
+
+ // Create an instance of nsIFile out of the current process directory
+ let distroDir = Services.dirsvc.get("XCurProcD", Ci.nsIFile);
+
+ // Construct a descendant of the distroDir file
+ distroDir.append("distribution");
+
+ // Create a clone of distroDir
+ let iniFile = distroDir.clone();
+
+ // Create a descendant of iniFile
+ iniFile.append("distribution.ini");
+ // It's a bug if distribution.ini already exists
+ if (iniFile.exists()) {
+ do_throw(
+ "distribution.ini already exists in objdir/mozilla/dist/bin/distribution."
+ );
+ }
+
+ registerCleanupFunction(function () {
+ // Remove the distribution.ini file
+ if (iniFile.exists()) {
+ iniFile.remove(true);
+ }
+ });
+
+ let testDir = Services.dirsvc.get("CurWorkD", Ci.nsIFile);
+ let testDistributionFile = testDir.clone();
+
+ // Construct descendant file
+ testDistributionFile.append("distribution.ini");
+ // Copy to distroDir
+ testDistributionFile.copyTo(distroDir, "distribution.ini");
+ Assert.ok(testDistributionFile.exists());
+
+ // Set the prefs
+ TBDistCustomizer.applyPrefDefaults();
+
+ let testIni = Cc["@mozilla.org/xpcom/ini-parser-factory;1"]
+ .getService(Ci.nsIINIParserFactory)
+ .createINIParser(testDistributionFile);
+
+ // Now check that prefs were set - test the Global prefs against the
+ // Global section in the ini file
+ let iniValue = testIni.getString("Global", "id");
+ let pref = Services.prefs.getCharPref("distribution.id");
+ Assert.equal(iniValue, pref);
+
+ iniValue = testIni.getString("Global", "version");
+ pref = Services.prefs.getCharPref("distribution.version");
+ Assert.equal(iniValue, pref);
+
+ let aboutLocale;
+ try {
+ aboutLocale = testIni.getString("Global", "about.en-US");
+ } catch (e) {
+ console.error(e);
+ }
+
+ if (aboutLocale == undefined) {
+ aboutLocale = testIni.getString("Global", "about");
+ }
+
+ pref = Services.prefs.getCharPref("distribution.about");
+ Assert.equal(aboutLocale, pref);
+
+ // Test Preferences section
+ let s = "Preferences";
+ for (let key of testIni.getKeys(s)) {
+ let value = TBDistCustomizer.parseValue(testIni.getString(s, key));
+ switch (typeof value) {
+ case "boolean":
+ Assert.equal(value, Services.prefs.getBoolPref(key));
+ break;
+ case "number":
+ Assert.equal(value, Services.prefs.getIntPref(key));
+ break;
+ case "string":
+ Assert.equal(value, Services.prefs.getCharPref(key));
+ break;
+ default:
+ do_throw(
+ "The preference " + key + " is of unknown type: " + typeof value
+ );
+ }
+ }
+
+ // Test the LocalizablePreferences-[locale] section
+ // Add any prefs found in it to the overrides array
+ let overrides = [];
+ s = "LocalizablePreferences-en-US";
+ for (let key of testIni.getKeys(s)) {
+ let value = TBDistCustomizer.parseValue(testIni.getString(s, key));
+ value = "data:text/plain," + key + "=" + value;
+ Assert.equal(value, Services.prefs.getCharPref(key));
+ overrides.push(key);
+ }
+
+ // Test the LocalizablePreferences section
+ // Any prefs here that aren't found in overrides are not overridden
+ // by LocalizablePrefs-[locale] and should be tested
+ s = "LocalizablePreferences";
+ for (let key of testIni.getKeys(s)) {
+ if (!overrides.includes(key)) {
+ let value = TBDistCustomizer.parseValue(testIni.getString(s, key));
+ value = value.replace(/%LOCALE%/g, "en-US");
+ value = "data:text/plain," + key + "=" + value;
+ Assert.equal(value, Services.prefs.getCharPref(key));
+ }
+ }
+ do_test_finished();
+}