test_marionette_arguments.py (2868B)
1 # This Source Code Form is subject to the terms of the Mozilla Public 2 # License, v. 2.0. If a copy of the MPL was not distributed with this 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 5 import mozunit 6 import pytest 7 8 from marionette_harness.runtests import MarionetteArguments, MarionetteTestRunner 9 10 11 @pytest.mark.parametrize("socket_timeout", ["A", "10", "1B-", "1C2", "44.35"]) 12 def test_parse_arg_socket_timeout(socket_timeout): 13 argv = ["marionette", "--socket-timeout", socket_timeout] 14 parser = MarionetteArguments() 15 16 def _is_float_convertible(value): 17 try: 18 float(value) 19 return True 20 except ValueError: 21 return False 22 23 if not _is_float_convertible(socket_timeout): 24 with pytest.raises(SystemExit) as ex: 25 parser.parse_args(args=argv) 26 assert ex.value.code == 2 27 else: 28 args = parser.parse_args(args=argv) 29 assert hasattr(args, "socket_timeout") and args.socket_timeout == float( 30 socket_timeout 31 ) 32 33 34 @pytest.mark.parametrize( 35 "arg_name, arg_dest, arg_value, expected_value", 36 [ 37 ("app-arg", "app_args", "samplevalue", ["samplevalue"]), 38 ("symbols-path", "symbols_path", "samplevalue", "samplevalue"), 39 ("gecko-log", "gecko_log", "samplevalue", "samplevalue"), 40 ("app", "app", "samplevalue", "samplevalue"), 41 ], 42 ) 43 def test_parsing_optional_arguments( 44 mach_parsed_kwargs, arg_name, arg_dest, arg_value, expected_value 45 ): 46 parser = MarionetteArguments() 47 parsed_args = parser.parse_args(["--" + arg_name, arg_value]) 48 result = vars(parsed_args) 49 assert result.get(arg_dest) == expected_value 50 mach_parsed_kwargs[arg_dest] = result[arg_dest] 51 runner = MarionetteTestRunner(**mach_parsed_kwargs) 52 built_kwargs = runner._build_kwargs() 53 assert built_kwargs[arg_dest] == expected_value 54 55 56 @pytest.mark.parametrize( 57 "arg_name, arg_dest, arg_value, expected_value", 58 [ 59 ("adb", "adb_path", "samplevalue", "samplevalue"), 60 ("avd", "avd", "samplevalue", "samplevalue"), 61 ("avd-home", "avd_home", "samplevalue", "samplevalue"), 62 ("package", "package_name", "samplevalue", "samplevalue"), 63 ], 64 ) 65 def test_parse_opt_args_emulator( 66 mach_parsed_kwargs, arg_name, arg_dest, arg_value, expected_value 67 ): 68 parser = MarionetteArguments() 69 parsed_args = parser.parse_args(["--" + arg_name, arg_value]) 70 result = vars(parsed_args) 71 assert result.get(arg_dest) == expected_value 72 mach_parsed_kwargs[arg_dest] = result[arg_dest] 73 mach_parsed_kwargs["emulator"] = True 74 runner = MarionetteTestRunner(**mach_parsed_kwargs) 75 built_kwargs = runner._build_kwargs() 76 assert built_kwargs[arg_dest] == expected_value 77 78 79 if __name__ == "__main__": 80 mozunit.main("-p", "no:terminalreporter", "--log-tbpl=-", "--capture", "no")