[pypy-commit] pypy default: support testing env values passed to app_main, test supported vars

bdkearns noreply at buildbot.pypy.org
Sun Feb 10 22:55:24 CET 2013


Author: Brian Kearns <bdkearns at gmail.com>
Branch: 
Changeset: r61050:b36eaca14928
Date: 2013-02-10 16:48 -0500
http://bitbucket.org/pypy/pypy/changeset/b36eaca14928/

Log:	support testing env values passed to app_main, test supported vars

diff --git a/pypy/interpreter/test2/test_app_main.py b/pypy/interpreter/test2/test_app_main.py
--- a/pypy/interpreter/test2/test_app_main.py
+++ b/pypy/interpreter/test2/test_app_main.py
@@ -81,14 +81,16 @@
                 assert not value, (
                     "option %r has unexpectedly the value %r" % (key, value))
 
-    def check(self, argv, **expected):
+    def check(self, argv, env, **expected):
         import StringIO
         from pypy.interpreter import app_main
+        saved_env = os.environ.copy()
         saved_sys_argv = sys.argv[:]
         saved_sys_stdout = sys.stdout
         saved_sys_stderr = sys.stdout
         app_main.os = os
         try:
+            os.environ.update(env)
             sys.stdout = sys.stderr = StringIO.StringIO()
             try:
                 options = app_main.parse_command_line(argv)
@@ -98,64 +100,70 @@
             else:
                 self.check_options(options, **expected)
         finally:
+            os.environ.clear()
+            os.environ.update(saved_env)
             sys.argv[:] = saved_sys_argv
             sys.stdout = saved_sys_stdout
             sys.stderr = saved_sys_stderr
 
     def test_all_combinations_I_can_think_of(self):
-        self.check([], sys_argv=[''], run_stdin=True)
-        self.check(['-'], sys_argv=['-'], run_stdin=True)
-        self.check(['-S'], sys_argv=[''], run_stdin=True, no_site=1)
-        self.check(['-OO'], sys_argv=[''], run_stdin=True, optimize=2)
-        self.check(['-O', '-O'], sys_argv=[''], run_stdin=True, optimize=2)
-        self.check(['-Qnew'], sys_argv=[''], run_stdin=True, division_new=1)
-        self.check(['-Qold'], sys_argv=[''], run_stdin=True, division_new=0)
-        self.check(['-Qwarn'], sys_argv=[''], run_stdin=True, division_warning=1)
-        self.check(['-Qwarnall'], sys_argv=[''], run_stdin=True,
+        self.check([], {}, sys_argv=[''], run_stdin=True)
+        self.check(['-'], {}, sys_argv=['-'], run_stdin=True)
+        self.check(['-S'], {}, sys_argv=[''], run_stdin=True, no_site=1)
+        self.check(['-OO'], {}, sys_argv=[''], run_stdin=True, optimize=2)
+        self.check(['-O', '-O'], {}, sys_argv=[''], run_stdin=True, optimize=2)
+        self.check(['-Qnew'], {}, sys_argv=[''], run_stdin=True, division_new=1)
+        self.check(['-Qold'], {}, sys_argv=[''], run_stdin=True, division_new=0)
+        self.check(['-Qwarn'], {}, sys_argv=[''], run_stdin=True, division_warning=1)
+        self.check(['-Qwarnall'], {}, sys_argv=[''], run_stdin=True,
                    division_warning=2)
-        self.check(['-Q', 'new'], sys_argv=[''], run_stdin=True, division_new=1)
-        self.check(['-SOQnew'], sys_argv=[''], run_stdin=True,
+        self.check(['-Q', 'new'], {}, sys_argv=[''], run_stdin=True, division_new=1)
+        self.check(['-SOQnew'], {}, sys_argv=[''], run_stdin=True,
                    no_site=1, optimize=1, division_new=1)
-        self.check(['-SOQ', 'new'], sys_argv=[''], run_stdin=True,
+        self.check(['-SOQ', 'new'], {}, sys_argv=[''], run_stdin=True,
                    no_site=1, optimize=1, division_new=1)
-        self.check(['-i'], sys_argv=[''], run_stdin=True,
+        self.check(['-i'], {}, sys_argv=[''], run_stdin=True,
                    interactive=1, inspect=1)
-        self.check(['-h'], output_contains='usage:')
-        self.check(['-S', '-tO', '-h'], output_contains='usage:')
-        self.check(['-S', '-thO'], output_contains='usage:')
-        self.check(['-S', '-tO', '--help'], output_contains='usage:')
-        self.check(['-S', '-tO', '--info'], output_contains='translation')
-        self.check(['-S', '-tO', '--version'], output_contains='Python')
-        self.check(['-S', '-tOV'], output_contains='Python')
-        self.check(['--jit', 'foobar', '-S'], sys_argv=[''],
+        self.check(['-h'], {}, output_contains='usage:')
+        self.check(['-S', '-tO', '-h'], {}, output_contains='usage:')
+        self.check(['-S', '-thO'], {}, output_contains='usage:')
+        self.check(['-S', '-tO', '--help'], {}, output_contains='usage:')
+        self.check(['-S', '-tO', '--info'], {}, output_contains='translation')
+        self.check(['-S', '-tO', '--version'], {}, output_contains='Python')
+        self.check(['-S', '-tOV'], {}, output_contains='Python')
+        self.check(['--jit', 'foobar', '-S'], {}, sys_argv=[''],
                    run_stdin=True, no_site=1)
-        self.check(['-c', 'pass'], sys_argv=['-c'], run_command='pass')
-        self.check(['-cpass'], sys_argv=['-c'], run_command='pass')
-        self.check(['-cpass','x'], sys_argv=['-c','x'], run_command='pass')
-        self.check(['-Sc', 'pass'], sys_argv=['-c'], run_command='pass',
+        self.check(['-c', 'pass'], {}, sys_argv=['-c'], run_command='pass')
+        self.check(['-cpass'], {}, sys_argv=['-c'], run_command='pass')
+        self.check(['-cpass','x'], {}, sys_argv=['-c','x'], run_command='pass')
+        self.check(['-Sc', 'pass'], {}, sys_argv=['-c'], run_command='pass',
                    no_site=1)
-        self.check(['-Scpass'], sys_argv=['-c'], run_command='pass', no_site=1)
-        self.check(['-c', '', ''], sys_argv=['-c', ''], run_command='')
-        self.check(['-mfoo', 'bar', 'baz'], sys_argv=['foo', 'bar', 'baz'],
+        self.check(['-Scpass'], {}, sys_argv=['-c'], run_command='pass', no_site=1)
+        self.check(['-c', '', ''], {}, sys_argv=['-c', ''], run_command='')
+        self.check(['-mfoo', 'bar', 'baz'], {}, sys_argv=['foo', 'bar', 'baz'],
                    run_module=True)
-        self.check(['-m', 'foo', 'bar', 'baz'], sys_argv=['foo', 'bar', 'baz'],
+        self.check(['-m', 'foo', 'bar', 'baz'], {}, sys_argv=['foo', 'bar', 'baz'],
                    run_module=True)
-        self.check(['-Smfoo', 'bar', 'baz'], sys_argv=['foo', 'bar', 'baz'],
+        self.check(['-Smfoo', 'bar', 'baz'], {}, sys_argv=['foo', 'bar', 'baz'],
                    run_module=True, no_site=1)
-        self.check(['-Sm', 'foo', 'bar', 'baz'], sys_argv=['foo', 'bar', 'baz'],
+        self.check(['-Sm', 'foo', 'bar', 'baz'], {}, sys_argv=['foo', 'bar', 'baz'],
                    run_module=True, no_site=1)
-        self.check(['-', 'foo', 'bar'], sys_argv=['-', 'foo', 'bar'],
+        self.check(['-', 'foo', 'bar'], {}, sys_argv=['-', 'foo', 'bar'],
                    run_stdin=True)
-        self.check(['foo', 'bar'], sys_argv=['foo', 'bar'])
-        self.check(['foo', '-i'], sys_argv=['foo', '-i'])
-        self.check(['-i', 'foo'], sys_argv=['foo'], interactive=1, inspect=1)
-        self.check(['--', 'foo'], sys_argv=['foo'])
-        self.check(['--', '-i', 'foo'], sys_argv=['-i', 'foo'])
-        self.check(['--', '-', 'foo'], sys_argv=['-', 'foo'], run_stdin=True)
-        self.check(['-Wbog'], sys_argv=[''], warnoptions=['bog'], run_stdin=True)
-        self.check(['-W', 'ab', '-SWc'], sys_argv=[''], warnoptions=['ab', 'c'],
+        self.check(['foo', 'bar'], {}, sys_argv=['foo', 'bar'])
+        self.check(['foo', '-i'], {}, sys_argv=['foo', '-i'])
+        self.check(['-i', 'foo'], {}, sys_argv=['foo'], interactive=1, inspect=1)
+        self.check(['--', 'foo'], {}, sys_argv=['foo'])
+        self.check(['--', '-i', 'foo'], {}, sys_argv=['-i', 'foo'])
+        self.check(['--', '-', 'foo'], {}, sys_argv=['-', 'foo'], run_stdin=True)
+        self.check(['-Wbog'], {}, sys_argv=[''], warnoptions=['bog'], run_stdin=True)
+        self.check(['-W', 'ab', '-SWc'], {}, sys_argv=[''], warnoptions=['ab', 'c'],
                    run_stdin=True, no_site=1)
 
+        self.check([], {'PYTHONUNBUFFERED': '1'}, sys_argv=[''], run_stdin=True, unbuffered=1)
+        self.check([], {'PYTHONNOUSERSITE': '1'}, sys_argv=[''], run_stdin=True, no_user_site=1)
+        self.check([], {'PYTHONDONTWRITEBYTECODE': '1'}, sys_argv=[''], run_stdin=True, dont_write_bytecode=1)
+
     def test_sysflags(self):
         flags = (
             ("debug", "-d", "1"),
@@ -183,13 +191,13 @@
                     expected[flag1] = int(value)
             else:
                 expected = {flag: int(value)}
-            self.check([opt, '-c', 'pass'], sys_argv=['-c'],
+            self.check([opt, '-c', 'pass'], {}, sys_argv=['-c'],
                        run_command='pass', **expected)
 
     def test_sysflags_envvar(self, monkeypatch):
         monkeypatch.setenv('PYTHONNOUSERSITE', '1')
         expected = {"no_user_site": True}
-        self.check(['-c', 'pass'], sys_argv=['-c'], run_command='pass', **expected)
+        self.check(['-c', 'pass'], {}, sys_argv=['-c'], run_command='pass', **expected)
 
 
 class TestInteraction:


More information about the pypy-commit mailing list