def test_iter_cast(os_env): env = EnvWrapper( NUMBERS=EnvVar(postprocessor=EnvVar.tokenize(sep=','), sub_cast=float)) os_env['NUMBERS'] = '0.1, 0.2, 0.3, 0.4' assert env.NUMBERS == [0.1, 0.2, 0.3, 0.4] d = env.collect() assert d['NUMBERS'] == os_env['NUMBERS']
def test_json(os_env): env = EnvWrapper(JSON=EnvVar(postprocessor=json.loads)) expected = {'foo': 1, 'bar': 0.23} os_env['JSON'] = json.dumps(expected) actual = env.JSON assert actual == expected d = env.collect() assert d['JSON'] == os_env['JSON']
def test_alt_bundle(os_env): env = EnvWrapper(SETTINGS=EnvVar(convert=dict)) d = {'foo': 0, 'bar': False, 'spam': "yada"} val = str(d) os_env['SETTINGS'] = val v = env.SETTINGS assert v == d assert env.collect()['SETTINGS'] == os_env['SETTINGS']
def test_to_source_file(os_env): env = EnvWrapper(VAR=EnvVar(default='foo'), VAR1=EnvVar(bundle='SETTINGS', default='bar'), VAR2=EnvVar(bundle='SETTINGS', convert=bool, default='1'), FLAG=EnvVar(convert=bool, default='no'), FAKE=EnvVar(proxy='YADA', default='yada')) os_env.update(env.collect()) f = io.StringIO() env.to_source_file(f) assert f.getvalue() == """VAR=foo
def test_collect(): env = EnvWrapper(VAR=EnvVar(), PREFIXED=EnvVar(prefix='FOO_'), BUNDLED=EnvVar(bundle='GROUP'), PROXIED=EnvVar(proxy='YADA')) d = env.collect() expected_os_env = {'VAR', 'FOO_PREFIXED', 'BUNDLED', 'YADA'} assert set(d.keys()) == expected_os_env expected_app_schema = {'VAR', 'PREFIXED', 'GROUP', 'BUNDLED', 'PROXIED'} assert set(env.keys()) == expected_app_schema
def test_to_config(os_env): env = EnvWrapper(VAR=EnvVar(default='foo'), VAR1=EnvVar(bundle='SETTINGS', default='bar'), VAR2=EnvVar(bundle='SETTINGS', default='baz'), FLAG=EnvVar(convert=bool, default='no')) os_env.update(env.collect()) f = io.StringIO() env.to_config(f, bool_values=('off', 'on'), preserve_case=False, default_section='general') assert f.getvalue() == """[general]
def test_to_json(os_env): env = EnvWrapper(VAR=EnvVar(default='foo'), VAR1=EnvVar(bundle='SETTINGS', default='bar'), VAR2=EnvVar(bundle='SETTINGS', convert=bool, default='1'), FLAG=EnvVar(convert=bool, default='no')) os_env.update(env.collect()) f = io.StringIO() env.to_json(f) assert f.getvalue() == '{"var": "foo", "flag": "false", ' \ '"settings": {"var1": "bar", "var2": "true"}}' f = io.StringIO() env.to_json(f, preserve_case=True) assert f.getvalue() == '{"VAR": "foo", "FLAG": "false", ' \ '"SETTINGS": {"VAR1": "bar", "VAR2": "true"}}' f = io.StringIO() env.to_json(f, sort_keys=True) assert f.getvalue() == '{"flag": "false", ' \ '"settings": {"var1": "bar", "var2": "true"}, ' \ '"var": "foo"}'