| #!/usr/bin/env python |
| |
| # This Source Code Form is subject to the terms of the Mozilla Public |
| # License, v. 2.0. If a copy of the MPL was not distributed with this file, |
| # You can obtain one at http://mozilla.org/MPL/2.0/. |
| |
| |
| import os |
| import tempfile |
| import unittest |
| import mozfile |
| |
| from mozprofile.profile import Profile |
| |
| |
| class CloneCleanupTest(unittest.TestCase): |
| """ |
| test cleanup logic for the clone functionality |
| see https://bugzilla.mozilla.org/show_bug.cgi?id=642843 |
| """ |
| |
| def setUp(self): |
| # make a profile with one preference |
| path = tempfile.mktemp() |
| self.addCleanup(mozfile.remove, path) |
| self.profile = Profile(path, |
| preferences={'foo': 'bar'}, |
| restore=False) |
| user_js = os.path.join(self.profile.profile, 'user.js') |
| self.assertTrue(os.path.exists(user_js)) |
| |
| def test_restore_true(self): |
| # make a clone of this profile with restore=True |
| clone = Profile.clone(self.profile.profile, restore=True) |
| self.addCleanup(mozfile.remove, clone.profile) |
| |
| clone.cleanup() |
| |
| # clone should be deleted |
| self.assertFalse(os.path.exists(clone.profile)) |
| |
| def test_restore_false(self): |
| # make a clone of this profile with restore=False |
| clone = Profile.clone(self.profile.profile, restore=False) |
| self.addCleanup(mozfile.remove, clone.profile) |
| |
| clone.cleanup() |
| |
| # clone should still be around on the filesystem |
| self.assertTrue(os.path.exists(clone.profile)) |
| |
| def test_cleanup_on_garbage_collected(self): |
| clone = Profile.clone(self.profile.profile) |
| self.addCleanup(mozfile.remove, clone.profile) |
| profile_dir = clone.profile |
| self.assertTrue(os.path.exists(profile_dir)) |
| del clone |
| # clone should be deleted |
| self.assertFalse(os.path.exists(profile_dir)) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |
| |