def test_config_over_defaults(mockconfig): parser = ConfigArgumentParser(description='test program') parser.add_argument('--foo', env='ENV_FOO', default='cars', config='foo') parser._set_config(mockconfig) args = [] ns = parser.parse_args(args) assert ns.foo == 'google' assert len(vars(ns)) == 1
def test_command_over_all(mockconfig): os.environ['ENV_FOO'] = 'bats' parser = ConfigArgumentParser(description='test program') parser.add_argument('--foo', env='ENV_FOO', default='cars', config='foo') parser._set_config(mockconfig) args = ['--foo', 'red'] ns = parser.parse_args(args) assert ns.foo == 'red' assert len(vars(ns)) == 1
def test_coerce_config(mockconfig): parser = ConfigArgumentParser(description='test program') parser.add_argument('--num1', config='num1', default=0, type=int) parser.add_argument('--num2', config='num2', default=0, type=int) parser._set_config(mockconfig) args = [] ns = parser.parse_args(args) # num1 did not coerce because it was not a string (matches argparse spec) assert ns.num1 == 10.0 # num2 coerced because it was a string in the config assert ns.num2 == 20 assert len(vars(ns)) == 2