62 lines
1.9 KiB
JavaScript
62 lines
1.9 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/*
|
|
* Tests updating a profile's path on disk by setting its rootDir to another
|
|
* profile directory, including the case where the profile is the dedicated
|
|
* default for the current install.
|
|
*/
|
|
add_task(
|
|
{
|
|
skip_if: () => !AppConstants.MOZ_SELECTABLE_PROFILES,
|
|
},
|
|
async () => {
|
|
let hash = xreDirProvider.getInstallHash();
|
|
let defaultProfile = makeRandomProfileDir("default");
|
|
let updatedProfile = makeRandomProfileDir("updated");
|
|
let profilesIni = {
|
|
profiles: [
|
|
{
|
|
name: "default",
|
|
path: defaultProfile.leafName,
|
|
default: true,
|
|
},
|
|
],
|
|
installs: {
|
|
[hash]: {
|
|
default: defaultProfile.leafName,
|
|
},
|
|
},
|
|
};
|
|
writeProfilesIni(profilesIni);
|
|
|
|
// Ensure the database and local data are consistent at the outset.
|
|
checkProfileService(profilesIni);
|
|
|
|
// Update the rootDir and flush changes to disk.
|
|
let { profile } = selectStartupProfile();
|
|
profile.rootDir = updatedProfile;
|
|
let service = getProfileService();
|
|
service.flush();
|
|
|
|
// These are the database changes we expected.
|
|
profilesIni.profiles[0].path = updatedProfile.leafName;
|
|
profilesIni.installs[hash].default = updatedProfile.leafName;
|
|
|
|
// Verify expected changes were made to the database.
|
|
checkProfileService(profilesIni, false);
|
|
|
|
// Finally, verify the profile object was updated as expected, including
|
|
// updating the localDir (which is not saved to the database).
|
|
Assert.ok(
|
|
profile.rootDir.equals(updatedProfile),
|
|
"rootDir should have been updated."
|
|
);
|
|
let expectedLocalDir = gDataHomeLocal.clone();
|
|
expectedLocalDir.append(updatedProfile.leafName);
|
|
Assert.ok(
|
|
profile.localDir.equals(expectedLocalDir),
|
|
"localDir should have been updated."
|
|
);
|
|
}
|
|
);
|