def test_action_defaults(): parser = ConfigArgumentParser(description='test program') parser.add_argument('--foo', default='blah') args = [] ns = parser.parse_args(args) assert ns.foo == 'blah' assert len(vars(ns)) == 1
def test_env_not_set(): parser = ConfigArgumentParser(description='test program') parser.add_argument('--foo', env='ENV_FOO', default='cars') args = [] ns = parser.parse_args(args) assert ns.foo == 'cars' assert len(vars(ns)) == 1
def test_coerce_env(): os.environ['ENV_NUM'] = '10' parser = ConfigArgumentParser(description='test program') parser.add_argument('--num', env='ENV_NUM', default=0, type=int) args = [] ns = parser.parse_args(args) assert ns.num == 10 assert len(vars(ns)) == 1
def test_env_over_defaults(): os.environ['ENV_FOO'] = 'bats' parser = ConfigArgumentParser(description='test program') parser.add_argument('--foo', env='ENV_FOO', default='cars', config='foo') args = [] ns = parser.parse_args(args) assert ns.foo == 'bats' assert len(vars(ns)) == 1
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_second_defaults_settings_wins(): parser = ConfigArgumentParser(description='test program') parser.set_defaults(**{'foo': 'bar'}) parser.add_argument('--foo', default='blah') args = [] ns = parser.parse_args(args) assert ns.foo == 'blah' 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