Bug 1867190 - Add prefs for PHC probablities r=glandium
[gecko.git] / toolkit / profile / xpcshell / test_snatch_environment.js
blob2241fb691c4b8ed39c1f6dee4ac68fa148374065
1 /* Any copyright is dedicated to the Public Domain.
2    http://creativecommons.org/publicdomain/zero/1.0/ */
4 /*
5  * Tests that the environment variables are used to select a profile and that
6  * on the first run of a dedicated profile build we snatch it if it was the
7  * default profile.
8  */
10 add_task(async () => {
11   let root = makeRandomProfileDir("foo");
12   let local = gDataHomeLocal.clone();
13   local.append("foo");
15   writeCompatibilityIni(root);
17   let profileData = {
18     options: {
19       startWithLastProfile: true,
20     },
21     profiles: [
22       {
23         name: PROFILE_DEFAULT,
24         path: root.leafName,
25         default: true,
26       },
27       {
28         name: "Profile2",
29         path: "Path2",
30       },
31       {
32         name: "Profile3",
33         path: "Path3",
34       },
35     ],
36     // Another install is using the profile but it isn't locked.
37     installs: {
38       otherinstall: {
39         default: root.leafName,
40       },
41     },
42   };
44   writeProfilesIni(profileData);
45   checkProfileService(profileData);
47   Services.env.set("XRE_PROFILE_PATH", root.path);
48   Services.env.set("XRE_PROFILE_LOCAL_PATH", local.path);
50   let { rootDir, localDir, profile, didCreate } = selectStartupProfile();
51   checkStartupReason("restart-claimed-default");
53   Assert.ok(!didCreate, "Should not have created a new profile.");
54   Assert.ok(rootDir.equals(root), "Should have selected the right root dir.");
55   Assert.ok(
56     localDir.equals(local),
57     "Should have selected the right local dir."
58   );
59   Assert.ok(profile, "A named profile matches this.");
60   Assert.equal(profile.name, PROFILE_DEFAULT, "The right profile was matched.");
62   let service = getProfileService();
63   Assert.equal(
64     service.defaultProfile,
65     profile,
66     "Should be the default profile."
67   );
68   Assert.equal(
69     service.currentProfile,
70     profile,
71     "Should be the current profile."
72   );
74   profileData = readProfilesIni();
75   Assert.equal(
76     profileData.profiles[0].name,
77     PROFILE_DEFAULT,
78     "Should be the right profile."
79   );
80   Assert.ok(
81     profileData.profiles[0].default,
82     "Should still be the old default profile."
83   );
85   let hash = xreDirProvider.getInstallHash();
86   // The info about the other install will have been removed so it goes through first run on next startup.
87   Assert.equal(
88     Object.keys(profileData.installs).length,
89     1,
90     "Should be one known install."
91   );
92   Assert.equal(
93     profileData.installs[hash].default,
94     root.leafName,
95     "Should have marked the original default profile as the default for this install."
96   );
97   Assert.ok(
98     !profileData.installs[hash].locked,
99     "Should not have locked as we're not the default app."
100   );