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 }