fune/toolkit/components/osfile/tests/xpcshell/test_path_constants.js
Agi Sferro 74aceaaf86 Bug 1700917 - Actually initialize the profile in GeckoView xpcshell. r=jmaher
Looks like spoofing the event is not enough as GeckoView intialization code
(indirectly) uses the profile folder.

We also catch exceptions coming from the init code and throw them appropriately
so we don't ignore errors during initialization.

Differential Revision: https://phabricator.services.mozilla.com/D109797
2021-03-26 18:30:16 +00:00

81 lines
2.5 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const { AppConstants } = ChromeUtils.import(
"resource://gre/modules/AppConstants.jsm"
);
const { ctypes } = ChromeUtils.import("resource://gre/modules/ctypes.jsm");
const { makeFakeAppDir } = ChromeUtils.import(
"resource://testing-common/AppData.jsm"
);
function compare_paths(ospath, key) {
let file;
try {
file = Services.dirsvc.get(key, Ci.nsIFile);
} catch (ex) {}
if (file) {
Assert.ok(!!ospath);
Assert.equal(ospath, file.path);
} else {
info(
"WARNING: " + key + " is not defined. Test may not be testing anything!"
);
Assert.ok(!ospath);
}
}
// Test simple paths
add_task(async function test_simple_paths() {
Assert.ok(!!OS.Constants.Path.tmpDir);
compare_paths(OS.Constants.Path.tmpDir, "TmpD");
});
// Some path constants aren't set up until the profile is available. This
// test verifies that behavior.
add_task(async function test_before_after_profile() {
// On Android the profile is initialized during xpcshell init, so this test
// will fail.
if (AppConstants.platform != "android") {
Assert.equal(null, OS.Constants.Path.profileDir);
Assert.equal(null, OS.Constants.Path.localProfileDir);
Assert.equal(null, OS.Constants.Path.userApplicationDataDir);
}
do_get_profile();
Assert.ok(!!OS.Constants.Path.profileDir);
Assert.ok(!!OS.Constants.Path.localProfileDir);
// UAppData is still null because the xpcshell profile doesn't set it up.
// This test is mostly here to fail in case behavior of do_get_profile() ever
// changes. We want to know if our assumptions no longer hold!
Assert.equal(null, OS.Constants.Path.userApplicationDataDir);
await makeFakeAppDir();
Assert.ok(!!OS.Constants.Path.userApplicationDataDir);
// FUTURE: verify AppData too (bug 964291).
});
// Test presence of paths that only exist on Desktop platforms
add_task(async function test_desktop_paths() {
if (OS.Constants.Sys.Name == "Android") {
return;
}
Assert.ok(!!OS.Constants.Path.homeDir);
compare_paths(OS.Constants.Path.homeDir, "Home");
compare_paths(OS.Constants.Path.userApplicationDataDir, "UAppData");
compare_paths(OS.Constants.Path.macUserLibDir, "ULibDir");
});
// Open libxul
add_task(async function test_libxul() {
ctypes.open(OS.Constants.Path.libxul);
info("Linked to libxul");
});