Exemplo n.º 1
0
def test_dotenv_nonempty_selfreferential_interpolation():
    stream = StringIO(u'some_path="${some_path}:a/b/c"\n')
    stream.seek(0)
    assert u'some_path' not in os.environ
    with restore_os_environ():
        os.environ[u'some_path'] = u'x/y/z'
        parsed_dict = dotenv_values(stream=stream)
    assert {u'some_path': u'x/y/z:a/b/c'} == parsed_dict
Exemplo n.º 2
0
def test_dotenv_values_stream(env, string, interpolate, expected):
    with mock.patch.dict(os.environ, env, clear=True):
        stream = StringIO(string)
        stream.seek(0)

        result = dotenv.dotenv_values(stream=stream, interpolate=interpolate)

        assert result == expected
Exemplo n.º 3
0
def test_dotenv_nonempty_selfreferential_interpolation():
    stream = StringIO(u'some_path="${some_path}:a/b/c"\n')
    stream.seek(0)
    assert u'some_path' not in os.environ
    with restore_os_environ():
        os.environ[u'some_path'] = u'x/y/z'
        parsed_dict = dotenv_values(stream=stream)
    assert {u'some_path': u'x/y/z:a/b/c'} == parsed_dict
Exemplo n.º 4
0
def test_dotenv_values_utf_8():
    stream = StringIO(u"a=à\n")
    load_dotenv(stream=stream)
    if PY2:
        assert os.environ["a"] == u"à".encode(sys.getfilesystemencoding())
    else:
        assert os.environ["a"] == "à"
Exemplo n.º 5
0
    def recipe_env(self):
        _platform = platform.system().lower()
        recipe = self.recipe() or {}
        env = {}

        def load_env(**kwargs):
            return {
                k: v
                for k, v in dotenv_values(**kwargs).items()
                if v is not None  # exclude config section line
            }

        def file_loader(d):
            return [
                d[k] for k in sorted(
                    [k for k, v in d.items() if isinstance(v, string_types)])
            ]

        dot_env = recipe.get("dotenv")
        if dot_env:
            # non platform specific dotenv
            env_files = file_loader(dot_env)
            if isinstance(dot_env.get(_platform), dict):
                # platform specific dotenv
                env_files += file_loader(dot_env[_platform])

            for file in env_files:
                env.update(load_env(dotenv_path=file))

        recipe_env = recipe.get("env")
        if recipe_env:
            stream = StringIO()

            _parser = ConfigParser()
            _parser.optionxform = str  # to prevent turning keys into lowercase
            _parser.read_dict({"env": recipe_env})
            _parser.write(stream)

            stream.seek(0)  # must reset buffer
            env.update(load_env(stream=stream))

        env.update({
            "REZUP_CONTAINER": self._container.name(),
            "REZUP_USING_REMOTE": "yes" if self._is_pulled else "",
        })

        return env
Exemplo n.º 6
0
def test_load_dotenv_utf_8():
    stream = StringIO("a=à")

    result = dotenv.load_dotenv(stream=stream)

    assert result is True
    if PY2:
        assert os.environ == {"a": "à".encode(sys.getfilesystemencoding())}
    else:
        assert os.environ == {"a": "à"}
Exemplo n.º 7
0
def test_dotenv_values_export():
    stream = StringIO('export foo=bar\n')
    stream.seek(0)
    load_dotenv(stream=stream)
    assert 'foo' in os.environ
    assert os.environ['foo'] == 'bar'
Exemplo n.º 8
0
def test_dotenv_values_stream():
    stream = StringIO(u'hello="it works!😃"\nDOTENV=${hello}\n')
    stream.seek(0)
    parsed_dict = dotenv_values(stream=stream)
    assert 'DOTENV' in parsed_dict
    assert parsed_dict['DOTENV'] == u'it works!😃'
Exemplo n.º 9
0
def test_dotenv_empty_selfreferential_interpolation():
    stream = StringIO(u'some_path="${some_path}:a/b/c"\n')
    stream.seek(0)
    assert u'some_path' not in os.environ
    parsed_dict = dotenv_values(stream=stream)
    assert {u'some_path': u':a/b/c'} == parsed_dict
Exemplo n.º 10
0
def test_parse_stream(test_input, expected):
    result = parse_stream(StringIO(test_input))

    assert list(result) == expected
Exemplo n.º 11
0
def test_dotenv_values_no_interpolate_strict():
    stream = StringIO(u'no_interpolate_strict=${MYVAR}')
    stream.seek(0)
    parsed_dict = dotenv_values(stream=stream, interpolate=False)
    assert 'no_interpolate_strict' in parsed_dict
    assert parsed_dict['no_interpolate_strict'] == u'${MYVAR}'
Exemplo n.º 12
0
def test_dotenv_empty_selfreferential_interpolation():
    stream = StringIO(u'some_path="${some_path}:a/b/c"\n')
    stream.seek(0)
    assert u'some_path' not in os.environ
    parsed_dict = dotenv_values(stream=stream)
    assert {u'some_path': u':a/b/c'} == parsed_dict
Exemplo n.º 13
0
def test_dotenv_values_export():
    stream = StringIO('export foo=bar\n')
    stream.seek(0)
    load_dotenv(stream=stream)
    assert 'foo' in os.environ
    assert os.environ['foo'] == 'bar'
Exemplo n.º 14
0
def test_dotenv_values_stream():
    stream = StringIO(u'hello="it works!😃"\nDOTENV=${hello}\n')
    stream.seek(0)
    parsed_dict = dotenv_values(stream=stream)
    assert 'DOTENV' in parsed_dict
    assert parsed_dict['DOTENV'] == u'it works!😃'