tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_autoconfig_snap.js (2191B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 /* eslint no-unsafe-finally: "off"*/
      5 /* Turning off this rule to allow control flow operations in finally block
      6 * http://eslint.org/docs/rules/no-unsafe-finally  */
      7 
      8 const { updateAppInfo } = ChromeUtils.importESModule(
      9  "resource://testing-common/AppInfo.sys.mjs"
     10 );
     11 
     12 function ensureRemove(file) {
     13  try {
     14    file.remove(false);
     15  } catch (e) {
     16    if (e.result != Cr.NS_ERROR_FILE_NOT_FOUND) {
     17      throw e;
     18    }
     19  }
     20 }
     21 
     22 async function run_test() {
     23  let prefs = Services.prefs.getBranch(null);
     24 
     25  let testDir = do_get_cwd();
     26  let confDir = testDir.clone();
     27  confDir.append("MozSystemConfigDir");
     28  Services.env.set("MOZ_SYSTEM_CONFIG_DIR", confDir.path);
     29  Services.env.set("SNAP_INSTANCE_NAME", "xpcshell");
     30 
     31  updateAppInfo();
     32 
     33  let sysConfD = Services.dirsvc.get("SysConfD", Ci.nsIFile);
     34 
     35  let defaultPrefDExtra = sysConfD.clone();
     36  defaultPrefDExtra.append("defaults");
     37  defaultPrefDExtra.append("pref");
     38 
     39  await IOUtils.makeDirectory(defaultPrefDExtra.path);
     40 
     41  const kAutoConfigFile = defaultPrefDExtra.clone();
     42  kAutoConfigFile.append("autoconfig_snap.js");
     43  const kAutoConfigCfg = sysConfD.clone();
     44  kAutoConfigCfg.append("autoconfig-snap.cfg");
     45 
     46  let autoConfigJS = testDir.clone();
     47  autoConfigJS.append(kAutoConfigFile.leafName);
     48 
     49  let autoConfigCfg = testDir.clone();
     50  autoConfigCfg.append(kAutoConfigCfg.leafName);
     51 
     52  try {
     53    autoConfigJS.copyTo(kAutoConfigFile.parent, kAutoConfigFile.leafName);
     54    autoConfigCfg.copyTo(kAutoConfigCfg.parent, kAutoConfigCfg.leafName);
     55 
     56    // Make sure nsReadConfig is initialized.
     57    Cc["@mozilla.org/readconfig;1"].getService(Ci.nsISupports);
     58    Services.prefs.resetPrefs();
     59 
     60    Services.obs.notifyObservers(
     61      Services.prefs,
     62      "prefservice:before-read-userprefs"
     63    );
     64 
     65    ok(prefs.prefHasUserValue("_autoconfig_.test.userpref-snap"));
     66    equal(
     67      "userpref-snap",
     68      prefs.getStringPref("_autoconfig_.test.userpref-snap")
     69    );
     70 
     71    Services.prefs.resetPrefs();
     72  } finally {
     73    ensureRemove(kAutoConfigFile);
     74    ensureRemove(kAutoConfigCfg);
     75    Services.prefs.resetPrefs();
     76  }
     77 }