tor-browser

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

test_load_modules.js (1544B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 const { AppConstants } = ChromeUtils.importESModule(
      5  "resource://gre/modules/AppConstants.sys.mjs"
      6 );
      7 
      8 const MODULE_BASE = "resource://services-common/";
      9 const shared_modules = ["async.sys.mjs", "rest.sys.mjs", "utils.sys.mjs"];
     10 
     11 const non_android_modules = ["tokenserverclient.sys.mjs"];
     12 
     13 const TEST_BASE = "resource://testing-common/services/common/";
     14 const shared_test_modules = ["logging.sys.mjs"];
     15 
     16 function expectImportsToSucceed(mm, base = MODULE_BASE) {
     17  for (let m of mm) {
     18    let resource = base + m;
     19    let succeeded = false;
     20    try {
     21      ChromeUtils.importESModule(resource);
     22      succeeded = true;
     23    } catch (e) {}
     24 
     25    if (!succeeded) {
     26      throw new Error(`Importing ${resource} should have succeeded!`);
     27    }
     28  }
     29 }
     30 
     31 function expectImportsToFail(mm, base = MODULE_BASE) {
     32  for (let m of mm) {
     33    let resource = base + m;
     34    let succeeded = false;
     35    try {
     36      ChromeUtils.importESModule(resource);
     37      succeeded = true;
     38    } catch (e) {}
     39 
     40    if (succeeded) {
     41      throw new Error(`Importing ${resource} should have failed!`);
     42    }
     43  }
     44 }
     45 
     46 function run_test() {
     47  expectImportsToSucceed(shared_modules);
     48  expectImportsToSucceed(shared_test_modules, TEST_BASE);
     49  expectImportsToSucceed(["LogManager.sys.mjs"], "resource://gre/modules/");
     50 
     51  if (AppConstants.platform != "android") {
     52    expectImportsToSucceed(non_android_modules);
     53  } else {
     54    expectImportsToFail(non_android_modules);
     55  }
     56 }