Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'android'
- Manifest: toolkit/profile/test/xpcshell/xpcshell.toml
/* Any copyright is dedicated to the Public Domain.
/**
* Tests that calling nsIToolkitProfile.remove on the default profile correctly
* removes the profile.
*/
add_task(async () => {
let hash = xreDirProvider.getInstallHash();
let defaultProfile = makeRandomProfileDir("default");
let profilesIni = {
profiles: [
{
name: "default",
path: defaultProfile.leafName,
default: true,
},
],
installs: {
[hash]: {
default: defaultProfile.leafName,
},
},
};
writeProfilesIni(profilesIni);
let service = getProfileService();
checkProfileService(profilesIni);
let { profile, didCreate } = selectStartupProfile();
Assert.ok(!didCreate, "Should have not created a new profile.");
Assert.equal(
profile.name,
"default",
"Should have selected the default profile."
);
Assert.equal(
profile,
service.defaultProfile,
"Should have selected the default profile."
);
checkProfileService(profilesIni);
// In an actual run of Firefox we wouldn't be able to delete the profile in
// use because it would be locked. But we don't actually lock the profile in
// tests.
profile.remove(false);
Assert.ok(!service.defaultProfile, "Should no longer be a default profile.");
Assert.equal(
profile,
service.currentProfile,
"Should still be the profile in use."
);
// These are the modifications that should have been made.
profilesIni.profiles.pop();
profilesIni.installs[hash].default = "";
// The data isn't flushed to disk so don't check the backup here.
checkProfileService(profilesIni, false);
service.flush();
// And that should have flushed to disk correctly.
checkProfileService();
// checkProfileService doesn't differentiate between a blank default profile
// for the install and a missing install.
profilesIni = readProfilesIni();
Assert.equal(
profilesIni.installs[hash].default,
"",
"Should be a blank default profile."
);
});