fune/toolkit/profile/xpcshell/test_snatch_environment_default.js
Victor Porof 463c2994cb Bug 1561435 - Format toolkit/profile/, a=automatic-formatting
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D36058

--HG--
extra : source : fbfc0ec0d915eb554382401ed6b6f28f1d001f92
2019-07-05 11:17:27 +02:00

104 lines
2.7 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/*
* Tests that the environment variables are used to select a profile and that
* on the first run of a dedicated profile build we snatch it if it was the
* default profile and lock it when we're the default app.
*/
add_task(async () => {
gIsDefaultApp = true;
let root = makeRandomProfileDir("foo");
let local = gDataHomeLocal.clone();
local.append("foo");
writeCompatibilityIni(root);
let profileData = {
options: {
startWithLastProfile: true,
},
profiles: [
{
name: PROFILE_DEFAULT,
path: root.leafName,
default: true,
},
{
name: "Profile2",
path: "Path2",
},
{
name: "Profile3",
path: "Path3",
},
],
// Another install is using the profile but it isn't locked.
installs: {
otherinstall: {
default: root.leafName,
},
},
};
writeProfilesIni(profileData);
checkProfileService(profileData);
let env = Cc["@mozilla.org/process/environment;1"].getService(
Ci.nsIEnvironment
);
env.set("XRE_PROFILE_PATH", root.path);
env.set("XRE_PROFILE_LOCAL_PATH", local.path);
let { rootDir, localDir, profile, didCreate } = selectStartupProfile();
checkStartupReason("restart-claimed-default");
Assert.ok(!didCreate, "Should not have created a new profile.");
Assert.ok(rootDir.equals(root), "Should have selected the right root dir.");
Assert.ok(
localDir.equals(local),
"Should have selected the right local dir."
);
Assert.ok(!!profile, "A named profile matches this.");
Assert.equal(profile.name, PROFILE_DEFAULT, "The right profile was matched.");
let service = getProfileService();
Assert.ok(
service.defaultProfile === profile,
"Should be the default profile."
);
Assert.ok(
service.currentProfile === profile,
"Should be the current profile."
);
profileData = readProfilesIni();
Assert.equal(
profileData.profiles[0].name,
PROFILE_DEFAULT,
"Should be the right profile."
);
Assert.ok(
profileData.profiles[0].default,
"Should still be the old default profile."
);
let hash = xreDirProvider.getInstallHash();
// The info about the other install will have been removed so it goes through first run on next startup.
Assert.equal(
Object.keys(profileData.installs).length,
1,
"Should be one known install."
);
Assert.equal(
profileData.installs[hash].default,
root.leafName,
"Should have marked the original default profile as the default for this install."
);
Assert.ok(
profileData.installs[hash].locked,
"Should have locked as we're the default app."
);
});