summaryrefslogtreecommitdiff
path: root/testing/mozbase/mozprofile/tests/test_clone_cleanup.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/mozbase/mozprofile/tests/test_clone_cleanup.py')
-rw-r--r--testing/mozbase/mozprofile/tests/test_clone_cleanup.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/testing/mozbase/mozprofile/tests/test_clone_cleanup.py b/testing/mozbase/mozprofile/tests/test_clone_cleanup.py
new file mode 100644
index 0000000000..51c7ba03e8
--- /dev/null
+++ b/testing/mozbase/mozprofile/tests/test_clone_cleanup.py
@@ -0,0 +1,63 @@
+#!/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()