/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ /** * 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." ); });