Author: Paweł Piotr Przeradowski <przeradow...@gmail.com> Branch: pythoninspect-fix Changeset: r65664:8f98f2b808f9 Date: 2013-07-23 22:52 +0200 http://bitbucket.org/pypy/pypy/changeset/8f98f2b808f9/
Log: implement __pypy__.os.real_getenv with a test diff --git a/pypy/module/__pypy__/__init__.py b/pypy/module/__pypy__/__init__.py --- a/pypy/module/__pypy__/__init__.py +++ b/pypy/module/__pypy__/__init__.py @@ -50,6 +50,13 @@ } +class OsModule(MixedModule): + appleveldefs = {} + interpleveldefs = { + 'real_getenv': 'interp_os.real_getenv' + } + + class Module(MixedModule): appleveldefs = { } @@ -82,6 +89,7 @@ "time": TimeModule, "thread": ThreadModule, "intop": IntOpModule, + "os": OsModule, } def setup_after_space_initialization(self): diff --git a/pypy/module/__pypy__/interp_os.py b/pypy/module/__pypy__/interp_os.py new file mode 100644 --- /dev/null +++ b/pypy/module/__pypy__/interp_os.py @@ -0,0 +1,9 @@ +from rpython.rtyper.module.ll_os_environ import getenv_llimpl + +from pypy.interpreter.gateway import unwrap_spec + + +@unwrap_spec(name=str) +def real_getenv(space, name): + """Get an OS environment value skipping Python cache""" + return space.wrap(getenv_llimpl(name)) diff --git a/pypy/module/__pypy__/test/test_os.py b/pypy/module/__pypy__/test/test_os.py new file mode 100644 --- /dev/null +++ b/pypy/module/__pypy__/test/test_os.py @@ -0,0 +1,16 @@ +class AppTestOs: + spaceconfig = dict(usemodules=['__pypy__']) + + def test_real_getenv(self): + import __pypy__.os + import os + + key = 'UNLIKELY_SET' + assert key not in os.environ + os.putenv(key, '42') + # this one skips Python cache + assert __pypy__.os.real_getenv(key) == '42' + # this one can only see things set on interpter start (cached) + assert os.getenv(key) is None + os.unsetenv(key) + assert __pypy__.os.real_getenv(key) is None _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit