tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_cmdline.py (8470B)


      1 import os
      2 import sys
      3 from unittest import mock
      4 
      5 import mozunit
      6 import pytest
      7 
      8 # need this so the raptor unit tests can find raptor/raptor classes
      9 here = os.path.abspath(os.path.dirname(__file__))
     10 raptor_dir = os.path.join(os.path.dirname(here), "raptor")
     11 sys.path.insert(0, raptor_dir)
     12 
     13 from argparse import ArgumentParser, Namespace
     14 
     15 from cmdline import create_parser, verify_options
     16 
     17 
     18 def test_verify_options(filedir):
     19    args = Namespace(
     20        app="firefox",
     21        binary="invalid/path",
     22        gecko_profile="False",
     23        page_cycles=1,
     24        page_timeout=60000,
     25        debug="True",
     26        chimera=False,
     27        browsertime_video=False,
     28        browsertime_visualmetrics=False,
     29        fission=True,
     30        fission_mobile=False,
     31        test_bytecode_cache=False,
     32        webext=False,
     33        extra_prefs=[],
     34        benchmark_repository=None,
     35        benchmark_revision=None,
     36        benchmark_branch=None,
     37        post_startup_delay=None,
     38        power_test=False,
     39    )
     40    parser = ArgumentParser()
     41 
     42    with pytest.raises(SystemExit):
     43        verify_options(parser, args)
     44 
     45    args.binary = os.path.join(filedir, "fake_binary.exe")
     46    verify_options(parser, args)  # assert no exception
     47 
     48    args = Namespace(
     49        app="geckoview",
     50        binary="org.mozilla.geckoview_example",
     51        activity="org.mozilla.geckoview_example.GeckoViewActivity",
     52        intent="android.intent.action.MAIN",
     53        gecko_profile="False",
     54        is_release_build=False,
     55        host="sophie",
     56        chimera=False,
     57        browsertime_video=False,
     58        browsertime_visualmetrics=False,
     59        fission=True,
     60        fission_mobile=False,
     61        test_bytecode_cache=False,
     62        webext=False,
     63        extra_prefs=[],
     64        benchmark_repository=None,
     65        benchmark_revision=None,
     66        benchmark_branch=None,
     67        post_startup_delay=None,
     68        power_test=False,
     69    )
     70    verify_options(parser, args)  # assert no exception
     71 
     72    args = Namespace(
     73        app="refbrow",
     74        binary="org.mozilla.reference.browser",
     75        activity="org.mozilla.reference.browser.BrowserTestActivity",
     76        intent="android.intent.action.MAIN",
     77        gecko_profile="False",
     78        is_release_build=False,
     79        host="sophie",
     80        chimera=False,
     81        browsertime_video=False,
     82        browsertime_visualmetrics=False,
     83        fission=True,
     84        fission_mobile=False,
     85        test_bytecode_cache=False,
     86        webext=False,
     87        extra_prefs=[],
     88        benchmark_repository=None,
     89        benchmark_revision=None,
     90        benchmark_branch=None,
     91        post_startup_delay=None,
     92        power_test=False,
     93    )
     94    verify_options(parser, args)  # assert no exception
     95 
     96    args = Namespace(
     97        app="fenix",
     98        binary="org.mozilla.fenix.browser",
     99        activity="org.mozilla.fenix.browser.BrowserPerformanceTestActivity",
    100        intent="android.intent.action.VIEW",
    101        gecko_profile="False",
    102        is_release_build=False,
    103        host="sophie",
    104        chimera=False,
    105        browsertime_video=False,
    106        browsertime_visualmetrics=False,
    107        fission=True,
    108        fission_mobile=False,
    109        test_bytecode_cache=False,
    110        webext=False,
    111        extra_prefs=[],
    112        benchmark_repository=None,
    113        benchmark_revision=None,
    114        benchmark_branch=None,
    115        post_startup_delay=None,
    116        power_test=False,
    117    )
    118    verify_options(parser, args)  # assert no exception
    119 
    120    args = Namespace(
    121        app="geckoview",
    122        binary="org.mozilla.geckoview_example",
    123        activity="org.mozilla.geckoview_example.GeckoViewActivity",
    124        intent="android.intent.action.MAIN",
    125        gecko_profile="False",
    126        is_release_build=False,
    127        host="sophie",
    128        chimera=False,
    129        browsertime_video=False,
    130        browsertime_visualmetrics=False,
    131        fission=True,
    132        fission_mobile=False,
    133        test_bytecode_cache=False,
    134        webext=False,
    135        extra_prefs=[],
    136        benchmark_repository=None,
    137        benchmark_revision=None,
    138        benchmark_branch=None,
    139        post_startup_delay=None,
    140        power_test=False,
    141    )
    142    verify_options(parser, args)  # assert no exception
    143 
    144    args = Namespace(
    145        app="refbrow",
    146        binary="org.mozilla.reference.browser",
    147        activity=None,
    148        intent="android.intent.action.MAIN",
    149        gecko_profile="False",
    150        is_release_build=False,
    151        host="sophie",
    152        chimera=False,
    153        browsertime_video=False,
    154        browsertime_visualmetrics=False,
    155        fission=True,
    156        fission_mobile=False,
    157        test_bytecode_cache=False,
    158        webext=False,
    159        extra_prefs=[],
    160        benchmark_repository=None,
    161        benchmark_revision=None,
    162        benchmark_branch=None,
    163        post_startup_delay=None,
    164        power_test=False,
    165    )
    166    parser = ArgumentParser()
    167 
    168    verify_options(parser, args)  # also will work as uses default activity
    169 
    170 
    171 @mock.patch("perftest.Perftest.build_browser_profile", new=mock.MagicMock())
    172 @pytest.mark.parametrize(
    173    "args,settings_to_check",
    174    [
    175        # Test that post_startup_delay is 30s as expected
    176        [
    177            [
    178                "--test",
    179                "test-page-1",
    180                "--binary",
    181                "invalid/path",
    182                # This gets set automatically from mach_commands, but is set
    183                # to False by default in the Perftest class
    184                "--run-local",
    185            ],
    186            [
    187                ("post_startup_delay", 30000),
    188                ("run_local", True),
    189                ("debug_mode", False),
    190            ],
    191        ],
    192        # Test that run_local is false by default
    193        [
    194            [
    195                "--test",
    196                "test-page-1",
    197                "--binary",
    198                "invalid/path",
    199            ],
    200            [
    201                ("post_startup_delay", 30000),
    202                ("run_local", False),
    203                ("debug_mode", False),
    204            ],
    205        ],
    206        # Test that debug mode gets set when running locally
    207        [
    208            [
    209                "--test",
    210                "test-page-1",
    211                "--binary",
    212                "invalid/path",
    213                "--debug-mode",
    214                "--run-local",
    215            ],
    216            [
    217                ("post_startup_delay", 3000),
    218                ("run_local", True),
    219                ("debug_mode", True),
    220            ],
    221        ],
    222        # Test that debug mode doesn't get set when we're not running locally
    223        [
    224            [
    225                "--test",
    226                "test-page-1",
    227                "--binary",
    228                "invalid/path",
    229                "--debug-mode",
    230            ],
    231            [
    232                ("post_startup_delay", 30000),
    233                ("run_local", False),
    234                ("debug_mode", False),
    235            ],
    236        ],
    237    ],
    238 )
    239 def test_perftest_setup_with_args(ConcretePerftest, args, settings_to_check):
    240    parser = create_parser()
    241    args = parser.parse_args(args)
    242 
    243    perftest = ConcretePerftest(**vars(args))
    244    for setting, expected in settings_to_check:
    245        assert getattr(perftest, setting) == expected
    246 
    247 
    248 @pytest.mark.parametrize(
    249    "args, expected_failure",
    250    [
    251        # Test that post_startup_delay is 30s as expected
    252        [
    253            {
    254                "app": "firefox",
    255                "binary": "org.mozilla.reference.browser",
    256                "activity": None,
    257                "intent": "android.intent.action.MAIN",
    258                "gecko_profile": "False",
    259                "is_release_build": False,
    260                "host": "sophie",
    261                "chimera": False,
    262                "browsertime_video": False,
    263                "browsertime_visualmetrics": False,
    264                "fission": True,
    265                "fission_mobile": False,
    266                "test_bytecode_cache": False,
    267                "webext": False,
    268                "extra_prefs": [],
    269                "benchmark_repository": None,
    270                "benchmark_revision": None,
    271                "benchmark_branch": None,
    272                "post_startup_delay": None,
    273                "power_test": True,
    274            },
    275            SystemExit,
    276        ],
    277    ],
    278 )
    279 def test_verify_options_failure(ConcretePerftest, args, expected_failure):
    280    args = Namespace(**args)
    281    parser = ArgumentParser()
    282    with pytest.raises(expected_failure):
    283        verify_options(parser, args)
    284 
    285 
    286 if __name__ == "__main__":
    287    mozunit.main()