#!/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()