Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_run_subparser_no_output_directory(self):
"""
test run subparser where no output directory is required
"""
parser = setup_rsmcmd_parser('test', uses_output_directory=False)
config_file = join(rsmtool_test_dir, 'data', 'experiments', 'lr', 'lr.json')
parsed_namespace = parser.parse_args(f"run {config_file}".split())
expected_namespace = argparse.Namespace(config_file=config_file,
subcommand='run')
ok_(not hasattr(parsed_namespace, 'output_dir'))
eq_(parsed_namespace, expected_namespace)
def test_run_subparser_with_output_directory(self):
"""
test run subparser with a specified output directory
"""
parser = setup_rsmcmd_parser('test')
config_file = join(rsmtool_test_dir, 'data', 'experiments', 'lr', 'lr.json')
parsed_namespace = parser.parse_args(f"run {config_file} /path/to/output/dir".split())
expected_namespace = argparse.Namespace(config_file=config_file,
output_dir='/path/to/output/dir',
subcommand='run')
eq_(parsed_namespace, expected_namespace)
def test_generate_subparser_with_subgroups_and_interactive_short_flags_together(self):
"""
test generate subparser with short subgroups and interactive flags together
"""
parser = setup_rsmcmd_parser('test', uses_subgroups=True)
parsed_namespace = parser.parse_args('generate -ig'.split())
expected_namespace = argparse.Namespace(subcommand='generate',
quiet=False,
interactive=True,
subgroups=True)
eq_(parsed_namespace, expected_namespace)
def test_generate_subparser_with_only_interactive_short_flag(self):
"""
test generate subparser with only the short interactive flag
"""
parser = setup_rsmcmd_parser('test')
parsed_namespace = parser.parse_args('generate -i'.split())
expected_namespace = argparse.Namespace(subcommand='generate',
interactive=True,
quiet=False)
eq_(parsed_namespace, expected_namespace)
def test_generate_subparser_with_subgroups_and_interactive_short_flags(self):
"""
test generate subparser with short subgroups and interactive flags
"""
parser = setup_rsmcmd_parser('test', uses_subgroups=True)
parsed_namespace = parser.parse_args('generate -i -g'.split())
expected_namespace = argparse.Namespace(subcommand='generate',
quiet=False,
interactive=True,
subgroups=True)
eq_(parsed_namespace, expected_namespace)
def test_generate_subparser_help_flag(self):
"""
test generate subparser with --help specified
"""
parser = setup_rsmcmd_parser('test')
# we need to patch sys.exit since --help just exists otherwise
with patch('sys.exit') as exit_mock:
parsed_namespace = parser.parse_args('generate --help'.split())
expected_namespace = argparse.Namespace(subcommand='generate',
interactive=False,
quiet=False)
eq_(parsed_namespace, expected_namespace)
assert exit_mock.called
def test_run_subparser_with_extra_options_bad_required_value(self):
"""
test run subparser with a non-boolean value for required
"""
extra_options = [CmdOption(dest='test_arg',
help='a test positional argument'),
CmdOption(longname='zeta',
dest='test_kwargs',
nargs='+',
required='true',
help='a multiply specified optional argument')]
_ = setup_rsmcmd_parser('test',
uses_output_directory=False,
extra_run_options=extra_options)
# we need two handlers, one that prints to stdout
# for the "run" command and one that prints to stderr
# from the "generate" command; the latter is necessary
# because do not want the warning to show up in the
# generated configuration file
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_handler.setFormatter(formatter)
stderr_handler = logging.StreamHandler(sys.stderr)
stderr_handler.setFormatter(formatter)
logging.root.setLevel(logging.INFO)
logger = logging.getLogger(__name__)
# set up an argument parser via our helper function
parser = setup_rsmcmd_parser('rsmcompare',
uses_output_directory=True,
uses_subgroups=True)
# if the first argument is not one of the valid sub-commands
# or one of the valid optional arguments, then assume that they
# are arguments for the "run" sub-command. This allows the
# old style command-line invocations to work without modification.
if sys.argv[1] not in VALID_PARSER_SUBCOMMANDS + ['-h', '--help',
'-V', '--version']:
args_to_pass = ['run'] + sys.argv[1:]
else:
args_to_pass = sys.argv[1:]
args = parser.parse_args(args=args_to_pass)
# call the appropriate function based on which sub-command was run
if args.subcommand == 'run':
# we need two handlers, one that prints to stdout
# for the "run" command and one that prints to stderr
# from the "generate" command; the latter is important
# because do not want the warning to show up in the
# generated configuration file
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_handler.setFormatter(formatter)
stderr_handler = logging.StreamHandler(sys.stderr)
stderr_handler.setFormatter(formatter)
logging.root.setLevel(logging.INFO)
logger = logging.getLogger(__name__)
# set up an argument parser via our helper function
parser = setup_rsmcmd_parser('rsmtool',
uses_output_directory=True,
allows_overwriting=True,
uses_subgroups=True)
# if the first argument is not one of the valid sub-commands
# or one of the valid optional arguments, then assume that they
# are arguments for the "run" sub-command. This allows the
# old style command-line invocations to work without modification.
if sys.argv[1] not in VALID_PARSER_SUBCOMMANDS + ['-h', '--help',
'-V', '--version']:
args_to_pass = ['run'] + sys.argv[1:]
else:
args_to_pass = sys.argv[1:]
args = parser.parse_args(args=args_to_pass)
# call the appropriate function based on which sub-command was run
# we need two handlers, one that prints to stdout
# for the "run" command and one that prints to stderr
# from the "generate" command; the latter is important
# because do not want the warning to show up in the
# generated configuration file
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_handler.setFormatter(formatter)
stderr_handler = logging.StreamHandler(sys.stderr)
stderr_handler.setFormatter(formatter)
logging.root.setLevel(logging.INFO)
logger = logging.getLogger(__name__)
# set up an argument parser via our helper function
parser = setup_rsmcmd_parser('rsmsummarize',
uses_output_directory=True,
allows_overwriting=True)
# if the first argument is not one of the valid sub-commands
# or one of the valid optional arguments, then assume that they
# are arguments for the "run" sub-command. This allows the
# old style command-line invocations to work without modification.
if sys.argv[1] not in VALID_PARSER_SUBCOMMANDS + ['-h', '--help',
'-V', '--version']:
args_to_pass = ['run'] + sys.argv[1:]
else:
args_to_pass = sys.argv[1:]
args = parser.parse_args(args=args_to_pass)
# call the appropriate function based on which sub-command was run
if args.subcommand == 'run':