1# Copyright 2012 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4import optparse 5import os 6import unittest 7 8from telemetry.core import browser_options 9 10class BrowserOptionsTest(unittest.TestCase): 11 def testDefaults(self): 12 options = browser_options.BrowserFinderOptions() 13 parser = options.CreateParser() 14 parser.add_option('-x', action='store', default=3) 15 parser.parse_args(['--browser', 'any']) 16 self.assertEquals(options.x, 3) # pylint: disable=E1101 17 18 def testDefaultsPlusOverride(self): 19 options = browser_options.BrowserFinderOptions() 20 parser = options.CreateParser() 21 parser.add_option('-x', action='store', default=3) 22 parser.parse_args(['--browser', 'any', '-x', 10]) 23 self.assertEquals(options.x, 10) # pylint: disable=E1101 24 25 def testDefaultsDontClobberPresetValue(self): 26 options = browser_options.BrowserFinderOptions() 27 setattr(options, 'x', 7) 28 parser = options.CreateParser() 29 parser.add_option('-x', action='store', default=3) 30 parser.parse_args(['--browser', 'any']) 31 self.assertEquals(options.x, 7) # pylint: disable=E1101 32 33 def testCount0(self): 34 options = browser_options.BrowserFinderOptions() 35 parser = options.CreateParser() 36 parser.add_option('-x', action='count', dest='v') 37 parser.parse_args(['--browser', 'any']) 38 self.assertEquals(options.v, None) # pylint: disable=E1101 39 40 def testCount2(self): 41 options = browser_options.BrowserFinderOptions() 42 parser = options.CreateParser() 43 parser.add_option('-x', action='count', dest='v') 44 parser.parse_args(['--browser', 'any', '-xx']) 45 self.assertEquals(options.v, 2) # pylint: disable=E1101 46 47 def testOptparseMutabilityWhenSpecified(self): 48 options = browser_options.BrowserFinderOptions() 49 parser = options.CreateParser() 50 parser.add_option('-x', dest='verbosity', action='store_true') 51 options_ret, _ = parser.parse_args(['--browser', 'any', '-x']) 52 self.assertEquals(options_ret, options) 53 self.assertTrue(options.verbosity) 54 55 def testOptparseMutabilityWhenNotSpecified(self): 56 options = browser_options.BrowserFinderOptions() 57 58 parser = options.CreateParser() 59 parser.add_option('-x', dest='verbosity', action='store_true') 60 options_ret, _ = parser.parse_args(['--browser', 'any']) 61 self.assertEquals(options_ret, options) 62 self.assertFalse(options.verbosity) 63 64 def testProfileDirDefault(self): 65 options = browser_options.BrowserFinderOptions() 66 parser = options.CreateParser() 67 parser.parse_args(['--browser', 'any']) 68 self.assertEquals(options.browser_options.profile_dir, None) 69 70 def testProfileDir(self): 71 options = browser_options.BrowserFinderOptions() 72 parser = options.CreateParser() 73 # Need to use a directory that exists. 74 current_dir = os.path.dirname(__file__) 75 parser.parse_args(['--browser', 'any', '--profile-dir', current_dir]) 76 self.assertEquals(options.browser_options.profile_dir, current_dir) 77 78 def testExtraBrowserArgs(self): 79 options = browser_options.BrowserFinderOptions() 80 parser = options.CreateParser() 81 parser.parse_args(['--extra-browser-args=--foo --bar']) 82 83 self.assertEquals(options.browser_options.extra_browser_args, 84 set(['--foo','--bar'])) 85 86 def testUseDevToolsActivePort(self): 87 options = browser_options.BrowserFinderOptions() 88 parser = options.CreateParser() 89 parser.parse_args(['--use-devtools-active-port']) 90 91 self.assertEquals(options.browser_options.use_devtools_active_port, True) 92 93 def testMergeDefaultValues(self): 94 options = browser_options.BrowserFinderOptions() 95 options.already_true = True 96 options.already_false = False 97 options.override_to_true = False 98 options.override_to_false = True 99 100 parser = optparse.OptionParser() 101 parser.add_option('--already_true', action='store_true') 102 parser.add_option('--already_false', action='store_true') 103 parser.add_option('--unset', action='store_true') 104 parser.add_option('--default_true', action='store_true', default=True) 105 parser.add_option('--default_false', action='store_true', default=False) 106 parser.add_option('--override_to_true', action='store_true', default=False) 107 parser.add_option('--override_to_false', action='store_true', default=True) 108 109 options.MergeDefaultValues(parser.get_default_values()) 110 111 self.assertTrue(options.already_true) 112 self.assertFalse(options.already_false) 113 self.assertTrue(options.unset is None) 114 self.assertTrue(options.default_true) 115 self.assertFalse(options.default_false) 116 self.assertFalse(options.override_to_true) 117 self.assertTrue(options.override_to_false) 118