diff options
Diffstat (limited to 'dev-lang/python/files/3.2/22_all_tests_environment.patch')
-rw-r--r-- | dev-lang/python/files/3.2/22_all_tests_environment.patch | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/dev-lang/python/files/3.2/22_all_tests_environment.patch b/dev-lang/python/files/3.2/22_all_tests_environment.patch new file mode 100644 index 0000000..c3b990c --- /dev/null +++ b/dev-lang/python/files/3.2/22_all_tests_environment.patch @@ -0,0 +1,183 @@ +http://bugs.python.org/issue1674555 + +--- Lib/site.py ++++ Lib/site.py +@@ -514,8 +514,9 @@ + known_paths = removeduppaths() + if ENABLE_USER_SITE is None: + ENABLE_USER_SITE = check_enableusersite() +- known_paths = addusersitepackages(known_paths) +- known_paths = addsitepackages(known_paths) ++ if os.environ.get("_PYTHONNOSITEPACKAGES") is None: ++ known_paths = addusersitepackages(known_paths) ++ known_paths = addsitepackages(known_paths) + if sys.platform == 'os2emx': + setBEGINLIBPATH() + setquit() +--- Lib/test/regrtest.py ++++ Lib/test/regrtest.py +@@ -174,6 +174,7 @@ + import unittest + import warnings + from inspect import isabstract ++from subprocess import Popen, PIPE + + try: + import threading +@@ -510,6 +511,57 @@ + support.use_resources = use_resources + save_modules = sys.modules.keys() + ++ opt_args = support.args_from_interpreter_flags() ++ base_cmd = [sys.executable] + opt_args + ['-m', 'test.regrtest'] ++ debug_output_pat = re.compile(r"\[\d+ refs\]$") ++ ++ def get_args_tuple(test, verbose, quiet, huntrleaks, debug, use_resources, ++ output_on_failure, failfast, match_tests): ++ return ( ++ (test, verbose, quiet), ++ dict(huntrleaks=huntrleaks, debug=debug, ++ use_resources=use_resources, ++ output_on_failure=output_on_failure, failfast=failfast, ++ match_tests=match_tests) ++ ) ++ ++ def _runtest(test, verbose, quiet, huntrleaks=False, debug=False, ++ use_resources=None, output_on_failure=False, failfast=False, ++ match_tests=None): ++ if test == "test_site": ++ args_tuple = get_args_tuple(test, verbose, quiet, huntrleaks, debug, ++ use_resources, output_on_failure, ++ failfast, match_tests) ++ env = os.environ.copy() ++ try: ++ del env["_PYTHONNOSITEPACKAGES"] ++ except KeyError: ++ pass ++ popen = Popen(base_cmd + ['--slaveargs', json.dumps(args_tuple)], ++ stdout=PIPE, stderr=PIPE, ++ universal_newlines=True, ++ close_fds=(os.name != 'nt'), ++ env=env) ++ stdout, stderr = popen.communicate() ++ # Strip last refcount output line if it exists, since it ++ # comes from the shutdown of the interpreter in the subcommand. ++ stderr = debug_output_pat.sub("", stderr) ++ stdout, _, result = stdout.strip().rpartition("\n") ++ result = json.loads(result) ++ if stdout: ++ print(stdout) ++ if stderr: ++ print(stderr, file=sys.stderr) ++ if result[0] == INTERRUPTED: ++ assert result[1] == 'KeyboardInterrupt' ++ raise KeyboardInterrupt ++ return result ++ else: ++ return runtest(test, verbose, quiet, huntrleaks=huntrleaks, ++ debug=debug, use_resources=use_resources, ++ output_on_failure=output_on_failure, ++ failfast=failfast, match_tests=match_tests) ++ + def accumulate_result(test, result): + ok, test_time = result + test_times.append((test_time, test)) +@@ -547,12 +599,8 @@ + print("Multiprocess option requires thread support") + sys.exit(2) + from queue import Queue +- from subprocess import Popen, PIPE +- debug_output_pat = re.compile(r"\[\d+ refs\]$") + output = Queue() + pending = MultiprocessTests(tests) +- opt_args = support.args_from_interpreter_flags() +- base_cmd = [sys.executable] + opt_args + ['-m', 'test.regrtest'] + def work(): + # A worker thread. + try: +@@ -562,12 +610,9 @@ + except StopIteration: + output.put((None, None, None, None)) + return +- args_tuple = ( +- (test, verbose, quiet), +- dict(huntrleaks=huntrleaks, use_resources=use_resources, +- debug=debug, output_on_failure=verbose3, +- failfast=failfast, match_tests=match_tests) +- ) ++ args_tuple = get_args_tuple(test, verbose, quiet, huntrleaks, ++ debug, use_resources, verbose3, ++ failfast, match_tests) + # -E is needed by some tests, e.g. test_import + # Running the child from the same working directory ensures + # that TEMPDIR for the child is the same when +@@ -632,13 +677,13 @@ + if trace: + # If we're tracing code coverage, then we don't exit with status + # if on a false return value from main. +- tracer.runctx('runtest(test, verbose, quiet)', ++ tracer.runctx('_runtest(test, verbose, quiet)', + globals=globals(), locals=vars()) + else: + try: +- result = runtest(test, verbose, quiet, huntrleaks, debug, +- output_on_failure=verbose3, +- failfast=failfast, match_tests=match_tests) ++ result = _runtest(test, verbose, quiet, huntrleaks, debug, ++ output_on_failure=verbose3, ++ failfast=failfast, match_tests=match_tests) + accumulate_result(test, result) + except KeyboardInterrupt: + interrupted = True +@@ -709,7 +754,7 @@ + sys.stdout.flush() + try: + verbose = True +- ok = runtest(test, True, quiet, huntrleaks, debug) ++ ok = _runtest(test, True, quiet, huntrleaks, debug) + except KeyboardInterrupt: + # print a newline separate from the ^C + print() +@@ -1077,8 +1122,9 @@ + for name, get, restore in self.resource_info(): + current = get() + original = saved_values.pop(name) +- # Check for changes to the resource's value +- if current != original: ++ # Check for changes to the resource's value. test_site is always run ++ # in a subprocess and is allowed to change os.environ and sys.path. ++ if current != original and self.testname != "test_site": + self.changed = True + restore(original) + if not self.quiet: +--- Lib/test/test_site.py ++++ Lib/test/test_site.py +@@ -8,6 +8,7 @@ + from test.support import run_unittest, TESTFN, EnvironmentVarGuard + from test.support import captured_stderr + import builtins ++import imp + import os + import sys + import re +@@ -21,6 +22,9 @@ + # already. + if "site" in sys.modules: + import site ++ if "_PYTHONNOSITEPACKAGES" in os.environ: ++ del os.environ["_PYTHONNOSITEPACKAGES"] ++ imp.reload(site) + else: + raise unittest.SkipTest("importation of site.py suppressed") + +--- Makefile.pre.in ++++ Makefile.pre.in +@@ -814,7 +814,7 @@ + + TESTOPTS= -l $(EXTRATESTOPTS) + TESTPROG= $(srcdir)/Lib/test/regrtest.py +-TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) -Wd -E -R -bb $(TESTPYTHONOPTS) ++TESTPYTHON= _PYTHONNOSITEPACKAGES=1 $(RUNSHARED) ./$(BUILDPYTHON) -Wd -E -R -bb $(TESTPYTHONOPTS) + test: all platform + -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f + -$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) |