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