def test_config_file(plain_command_line, config_command_line, config_contents): config_file_argparse = arguments.ConfigArgumentParser() # Capital letter arguments are required config_file_argparse.add_argument("-a", type=int) config_file_argparse.add_argument("-b", type=int) config_file_argparse.add_argument("-C", type=int, required=True) config_file_argparse.add_argument("-D", type=int, required=True) config_file_argparse.add_argument("-e", type=int) # The option '--config <file>' will be added automaticall to config_command_line with tempfile.NamedTemporaryFile("w") as fp: arguments.save_args(argparse.Namespace(**config_contents), fp.name) fp.flush() # Parse args and cast to dicts directly args_command_line = vars( config_file_argparse.parse_args(args=plain_command_line.split())) args_config = vars( config_file_argparse.parse_args( args=(config_command_line + (" --config %s" % fp.name)).split())) # Remove the config entry del args_command_line["config"] del args_config["config"] assert args_command_line == args_config
def test_config_file_required(config_command_line, config_contents): config_file_argparse = arguments.ConfigArgumentParser() # Capital letter arguments are required config_file_argparse.add_argument("-a", type=int) config_file_argparse.add_argument("-b", type=int) config_file_argparse.add_argument("-C", type=int, required=True) config_file_argparse.add_argument("-D", type=int, required=True) config_file_argparse.add_argument("-e", type=int) # The option '--config <file>' will be added automaticall to config_command_line with pytest.raises(SystemExit): # argparse does not have finer regularity exceptions with tempfile.NamedTemporaryFile("w") as fp: arguments.save_args(argparse.Namespace(**config_contents), fp.name) fp.flush() # Parse args and cast to dicts directly config_file_argparse.parse_args( args=(config_command_line + (" --config %s" % fp.name)).split())
def test_config_file(plain_command_line, config_command_line, config_contents): config_file_argparse = arguments.ConfigArgumentParser() # Capital letter arguments are required config_file_argparse.add_argument("-a", type=int) config_file_argparse.add_argument("-b", type=int) config_file_argparse.add_argument("-C", type=int, required=True) config_file_argparse.add_argument("-D", type=int, required=True) config_file_argparse.add_argument("-e", type=int) # The option '--config <file>' will be added automaticall to config_command_line with tempfile.NamedTemporaryFile("w") as fp: arguments.save_args(argparse.Namespace(**config_contents), fp.name) fp.flush() # Parse args and cast to dicts directly args_command_line = vars(config_file_argparse.parse_args(args=plain_command_line.split())) args_config = vars(config_file_argparse.parse_args( args=(config_command_line + (" --config %s" % fp.name)).split())) # Remove the config entry del args_command_line["config"] del args_config["config"] assert args_command_line == args_config