| Index: third_party/mozprofile/tests/test_preferences.py
|
| ===================================================================
|
| --- third_party/mozprofile/tests/test_preferences.py (revision 0)
|
| +++ third_party/mozprofile/tests/test_preferences.py (revision 0)
|
| @@ -0,0 +1,213 @@
|
| +#!/usr/bin/env python
|
| +
|
| +import os
|
| +import shutil
|
| +import subprocess
|
| +import tempfile
|
| +import unittest
|
| +from mozprofile.prefs import Preferences
|
| +from mozprofile.profile import Profile
|
| +
|
| +class PreferencesTest(unittest.TestCase):
|
| + """test mozprofile"""
|
| +
|
| + def run_command(self, *args):
|
| + """
|
| + runs mozprofile;
|
| + returns (stdout, stderr, code)
|
| + """
|
| + process = subprocess.Popen(args,
|
| + stdout=subprocess.PIPE,
|
| + stderr=subprocess.PIPE)
|
| + stdout, stderr = process.communicate()
|
| + stdout = stdout.strip()
|
| + stderr = stderr.strip()
|
| + return stdout, stderr, process.returncode
|
| +
|
| + def compare_generated(self, _prefs, commandline):
|
| + """
|
| + writes out to a new profile with mozprofile command line
|
| + reads the generated preferences with prefs.py
|
| + compares the results
|
| + cleans up
|
| + """
|
| + profile, stderr, code = self.run_command(*commandline)
|
| + prefs_file = os.path.join(profile, 'user.js')
|
| + self.assertTrue(os.path.exists(prefs_file))
|
| + read = Preferences.read_prefs(prefs_file)
|
| + if isinstance(_prefs, dict):
|
| + read = dict(read)
|
| + self.assertEqual(_prefs, read)
|
| + shutil.rmtree(profile)
|
| +
|
| + def test_basic_prefs(self):
|
| + _prefs = {"browser.startup.homepage": "http://planet.mozilla.org/"}
|
| + commandline = ["mozprofile"]
|
| + _prefs = _prefs.items()
|
| + for pref, value in _prefs:
|
| + commandline += ["--pref", "%s:%s" % (pref, value)]
|
| + self.compare_generated(_prefs, commandline)
|
| +
|
| + def test_ordered_prefs(self):
|
| + """ensure the prefs stay in the right order"""
|
| + _prefs = [("browser.startup.homepage", "http://planet.mozilla.org/"),
|
| + ("zoom.minPercent", 30),
|
| + ("zoom.maxPercent", 300),
|
| + ("webgl.verbose", 'false')]
|
| + commandline = ["mozprofile"]
|
| + for pref, value in _prefs:
|
| + commandline += ["--pref", "%s:%s" % (pref, value)]
|
| + _prefs = [(i, Preferences.cast(j)) for i, j in _prefs]
|
| + self.compare_generated(_prefs, commandline)
|
| +
|
| + def test_ini(self):
|
| +
|
| + # write the .ini file
|
| + _ini = """[DEFAULT]
|
| +browser.startup.homepage = http://planet.mozilla.org/
|
| +
|
| +[foo]
|
| +browser.startup.homepage = http://github.com/
|
| +"""
|
| + fd, name = tempfile.mkstemp(suffix='.ini')
|
| + os.write(fd, _ini)
|
| + os.close(fd)
|
| + commandline = ["mozprofile", "--preferences", name]
|
| +
|
| + # test the [DEFAULT] section
|
| + _prefs = {'browser.startup.homepage': 'http://planet.mozilla.org/'}
|
| + self.compare_generated(_prefs, commandline)
|
| +
|
| + # test a specific section
|
| + _prefs = {'browser.startup.homepage': 'http://github.com/'}
|
| + commandline[-1] = commandline[-1] + ':foo'
|
| + self.compare_generated(_prefs, commandline)
|
| +
|
| + # cleanup
|
| + os.remove(name)
|
| +
|
| + def test_reset_should_remove_added_prefs(self):
|
| + """Check that when we call reset the items we expect are updated"""
|
| +
|
| + profile = Profile()
|
| + prefs_file = os.path.join(profile.profile, 'user.js')
|
| +
|
| + # we shouldn't have any initial preferences
|
| + initial_prefs = Preferences.read_prefs(prefs_file)
|
| + self.assertFalse(initial_prefs)
|
| + initial_prefs = file(prefs_file).read().strip()
|
| + self.assertFalse(initial_prefs)
|
| +
|
| + # add some preferences
|
| + prefs1 = [("mr.t.quotes", "i aint getting on no plane!")]
|
| + profile.set_preferences(prefs1)
|
| + self.assertEqual(prefs1, Preferences.read_prefs(prefs_file))
|
| + lines = file(prefs_file).read().strip().splitlines()
|
| + self.assertTrue(bool([line for line in lines
|
| + if line.startswith('#MozRunner Prefs Start')]))
|
| + self.assertTrue(bool([line for line in lines
|
| + if line.startswith('#MozRunner Prefs End')]))
|
| +
|
| + profile.reset()
|
| + self.assertNotEqual(prefs1, \
|
| + Preferences.read_prefs(os.path.join(profile.profile, 'user.js')),\
|
| + "I pity the fool who left my pref")
|
| +
|
| + def test_magic_markers(self):
|
| + """ensure our magic markers are working"""
|
| +
|
| + profile = Profile()
|
| + prefs_file = os.path.join(profile.profile, 'user.js')
|
| +
|
| + # we shouldn't have any initial preferences
|
| + initial_prefs = Preferences.read_prefs(prefs_file)
|
| + self.assertFalse(initial_prefs)
|
| + initial_prefs = file(prefs_file).read().strip()
|
| + self.assertFalse(initial_prefs)
|
| +
|
| + # add some preferences
|
| + prefs1 = [("browser.startup.homepage", "http://planet.mozilla.org/"),
|
| + ("zoom.minPercent", 30)]
|
| + profile.set_preferences(prefs1)
|
| + self.assertEqual(prefs1, Preferences.read_prefs(prefs_file))
|
| + lines = file(prefs_file).read().strip().splitlines()
|
| + self.assertTrue(bool([line for line in lines
|
| + if line.startswith('#MozRunner Prefs Start')]))
|
| + self.assertTrue(bool([line for line in lines
|
| + if line.startswith('#MozRunner Prefs End')]))
|
| +
|
| + # add some more preferences
|
| + prefs2 = [("zoom.maxPercent", 300),
|
| + ("webgl.verbose", 'false')]
|
| + profile.set_preferences(prefs2)
|
| + self.assertEqual(prefs1 + prefs2, Preferences.read_prefs(prefs_file))
|
| + lines = file(prefs_file).read().strip().splitlines()
|
| + self.assertTrue(len([line for line in lines
|
| + if line.startswith('#MozRunner Prefs Start')]) == 2)
|
| + self.assertTrue(len([line for line in lines
|
| + if line.startswith('#MozRunner Prefs End')]) == 2)
|
| +
|
| + # now clean it up
|
| + profile.clean_preferences()
|
| + final_prefs = Preferences.read_prefs(prefs_file)
|
| + self.assertFalse(final_prefs)
|
| + lines = file(prefs_file).read().strip().splitlines()
|
| + self.assertTrue('#MozRunner Prefs Start' not in lines)
|
| + self.assertTrue('#MozRunner Prefs End' not in lines)
|
| +
|
| + def test_preexisting_preferences(self):
|
| + """ensure you don't clobber preexisting preferences"""
|
| +
|
| + # make a pretend profile
|
| + tempdir = tempfile.mkdtemp()
|
| +
|
| + try:
|
| + # make a user.js
|
| + contents = """
|
| +user_pref("webgl.enabled_for_all_sites", true);
|
| +user_pref("webgl.force-enabled", true);
|
| +"""
|
| + user_js = os.path.join(tempdir, 'user.js')
|
| + f = file(user_js, 'w')
|
| + f.write(contents)
|
| + f.close()
|
| +
|
| + # make sure you can read it
|
| + prefs = Preferences.read_prefs(user_js)
|
| + original_prefs = [('webgl.enabled_for_all_sites', True), ('webgl.force-enabled', True)]
|
| + self.assertTrue(prefs == original_prefs)
|
| +
|
| + # now read this as a profile
|
| + profile = Profile(tempdir, preferences={"browser.download.dir": "/home/jhammel"})
|
| +
|
| + # make sure the new pref is now there
|
| + new_prefs = original_prefs[:] + [("browser.download.dir", "/home/jhammel")]
|
| + prefs = Preferences.read_prefs(user_js)
|
| + self.assertTrue(prefs == new_prefs)
|
| +
|
| + # clean up the added preferences
|
| + profile.cleanup()
|
| + del profile
|
| +
|
| + # make sure you have the original preferences
|
| + prefs = Preferences.read_prefs(user_js)
|
| + self.assertTrue(prefs == original_prefs)
|
| + except:
|
| + shutil.rmtree(tempdir)
|
| + raise
|
| +
|
| + def test_json(self):
|
| + _prefs = {"browser.startup.homepage": "http://planet.mozilla.org/"}
|
| + json = '{"browser.startup.homepage": "http://planet.mozilla.org/"}'
|
| +
|
| + # just repr it...could use the json module but we don't need it here
|
| + fd, name = tempfile.mkstemp(suffix='.json')
|
| + os.write(fd, json)
|
| + os.close(fd)
|
| +
|
| + commandline = ["mozprofile", "--preferences", name]
|
| + self.compare_generated(_prefs, commandline)
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + unittest.main()
|
|
|
| Property changes on: third_party/mozprofile/tests/test_preferences.py
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
| Added: svn:executable
|
| + *
|
|
|
|
|