Example #1
0
def test_expandvars_case():
    if not environ_case_sensitive:
        with preserve_environ():
            environ.pop("foo", None)
            environ["FOO"] = "bar"
            assert expandvars("$foo") == "bar"
            environ["FOo"] = "baz"
            assert expandvars("$fOO") == "baz"
    else:
        with preserve_environ():
            environ.pop("foo", None)
            environ["FOO"] = "bar"
            assert expandvars("$foo") == "$foo"
Example #2
0
def parse_xdg_user_dirs(data):
    """Parses xdg-user-dirs and returns a dict of keys and paths.

    The paths depend on the content of environ while calling this function.
    See http://www.freedesktop.org/wiki/Software/xdg-user-dirs/

    Args:
        data (bytes)

    Can't fail (but might return garbage).
    """

    assert isinstance(data, bytes)

    paths = {}
    for line in data.splitlines():
        if line.startswith(b"#"):
            continue
        parts = line.split(b"=", 1)
        if len(parts) <= 1:
            continue
        key = parts[0]
        try:
            values = shlex.split(bytes2fsn(parts[1], "utf-8"))
        except ValueError:
            continue
        if len(values) != 1:
            continue
        paths[key] = os.path.normpath(expandvars(values[0]))

    return paths
Example #3
0
def parse_xdg_user_dirs(data):
    """Parses xdg-user-dirs and returns a dict of keys and paths.

    The paths depend on the content of environ while calling this function.
    See http://www.freedesktop.org/wiki/Software/xdg-user-dirs/

    Args:
        data (bytes)

    Can't fail (but might return garbage).
    """

    assert isinstance(data, bytes)

    paths = {}
    for line in data.splitlines():
        if line.startswith(b"#"):
            continue
        parts = line.split(b"=", 1)
        if len(parts) <= 1:
            continue
        key = parts[0]
        try:
            values = shlex.split(bytes2fsn(parts[1], "utf-8"))
        except ValueError:
            continue
        if len(values) != 1:
            continue
        paths[key] = os.path.normpath(expandvars(values[0]))

    return paths
Example #4
0
def test_expandvars():
    with preserve_environ():
        environ["foo"] = "bar"
        environ["nope b"] = "xxx"
        environ["f/oo"] = "bar"
        environ.pop("nope", "")

        assert expandvars("$foo") == "bar"
        assert expandvars("$nope b") == "$nope b"
        assert expandvars("/$foo/") == "/bar/"
        assert expandvars("$f/oo") == "$f/oo"
        assert expandvars("$nope") == "$nope"
        assert expandvars("$foo_") == "$foo_"

        assert expandvars("${f/oo}") == "bar"
        assert expandvars("${nope b}") == "xxx"
        assert expandvars("${nope}") == "${nope}"
        assert isinstance(expandvars("$foo"), fsnative)

    with preserve_environ():
        if os.name == "nt":
            environ[u"ö"] = u"ä"
            environ.pop(u"ä", "")
            assert isinstance(expandvars("$ö"), fsnative)
            assert expandvars(u"$ö") == u"ä"
            assert expandvars(u"${ö}") == u"ä"
            assert expandvars(u"${ä}") == u"${ä}"
            assert expandvars(u"$ä") == u"$ä"

            assert expandvars(u"%ö") == u"%ö"
            assert expandvars(u"ö%") == u"ö%"
            assert expandvars(u"%ö%") == u"ä"
            assert expandvars(u"%ä%") == u"%ä%"