[pypy-svn] pypy fast-forward: Merge heads
amauryfa
commits-noreply at bitbucket.org
Sun Jan 16 19:38:31 CET 2011
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: fast-forward
Changeset: r40737:7d03f359632a
Date: 2011-01-16 19:39 +0100
http://bitbucket.org/pypy/pypy/changeset/7d03f359632a/
Log: Merge heads
diff --git a/lib_pypy/pypy_test/test_runpy.py b/lib_pypy/pypy_test/test_runpy.py
deleted file mode 100644
--- a/lib_pypy/pypy_test/test_runpy.py
+++ /dev/null
@@ -1,162 +0,0 @@
-# Test the runpy module
-from __future__ import absolute_import
-import py
-import unittest
-import os
-import os.path
-import sys
-import tempfile
-from .. import runpy
-from ..runpy import _run_module_code, run_module
-
-sys.modules['my_runpy'] = runpy # so that code in exec can freely import it
- # without messing with __name__ and/or sys.path
-
-verbose = 0
-
-# Set up the test code and expected results
-class TestRunModuleCode:
-
- expected_result = ["Top level assignment", "Lower level reference"]
- test_source = py.code.Source("""
- # Check basic code execution
- result = ['Top level assignment']
- def f():
- result.append('Lower level reference')
- f()
- # Check the sys module
- import sys
- run_argv0 = sys.argv[0]
- if __name__ in sys.modules:
- run_name = sys.modules[__name__].__name__
- # Check nested operation
- import my_runpy # this is imported as ..runpy as manually saved into sys.modules, see above
- nested = my_runpy._run_module_code('x=1\', mod_name='<run>',
- alter_sys=True)
- """).compile()
-
-
- def test_run_module_code(self):
- initial = object()
- name = "<Nonsense>"
- file = "Some other nonsense"
- loader = "Now you're just being silly"
- d1 = dict(initial=initial)
- saved_argv0 = sys.argv[0]
- d2 = _run_module_code(self.test_source,
- d1,
- name,
- file,
- loader,
- True)
- assert "result" not in d1
- assert d2["initial"] is initial
- assert d2["result"] == self.expected_result
- assert d2["nested"]["x"] == 1
- assert d2["__name__"] is name
- assert d2["run_name"] is name
- assert d2["__file__"] is file
- assert d2["run_argv0"] is file
- assert d2["__loader__"] is loader
- assert sys.argv[0] is saved_argv0
- assert name not in sys.modules
-
- def test_run_module_code_defaults(self):
- saved_argv0 = sys.argv[0]
- d = _run_module_code(self.test_source)
- assert d["result"] == self.expected_result
- assert d["__name__"] is None
- assert d["__file__"] is None
- assert d["__loader__"] is None
- assert d["run_argv0"] is saved_argv0
- assert "run_name" not in d
- assert sys.argv[0] is saved_argv0
-
-class TestRunModule:
-
- def expect_import_error(self, mod_name):
- try:
- run_module(mod_name)
- except ImportError:
- pass
- else:
- assert false, "Expected import error for " + mod_name
-
- def test_invalid_names(self):
- self.expect_import_error("sys")
- self.expect_import_error("sys.imp.eric")
- self.expect_import_error("os.path.half")
- self.expect_import_error("a.bee")
- self.expect_import_error(".howard")
- self.expect_import_error("..eaten")
-
- def test_library_module(self):
- run_module("runpy")
-
- def _make_pkg(self, source, depth):
- pkg_name = "__runpy_pkg__"
- init_fname = "__init__"+os.extsep+"py"
- test_fname = "runpy_test"+os.extsep+"py"
- pkg_dir = sub_dir = tempfile.mkdtemp()
- if verbose: print " Package tree in:", sub_dir
- sys.path.insert(0, pkg_dir)
- if verbose: print " Updated sys.path:", sys.path[0]
- for i in range(depth):
- sub_dir = os.path.join(sub_dir, pkg_name)
- os.mkdir(sub_dir)
- if verbose: print " Next level in:", sub_dir
- pkg_fname = os.path.join(sub_dir, init_fname)
- pkg_file = open(pkg_fname, "w")
- pkg_file.write("__path__ = [%r]\n" % sub_dir)
- pkg_file.close()
- if verbose: print " Created:", pkg_fname
- mod_fname = os.path.join(sub_dir, test_fname)
- mod_file = open(mod_fname, "w")
- mod_file.write(source)
- mod_file.close()
- if verbose: print " Created:", mod_fname
- mod_name = (pkg_name+".")*depth + "runpy_test"
- return pkg_dir, mod_fname, mod_name
-
- def _del_pkg(self, top, depth, mod_name):
- for root, dirs, files in os.walk(top, topdown=False):
- for name in files:
- os.remove(os.path.join(root, name))
- for name in dirs:
- os.rmdir(os.path.join(root, name))
- os.rmdir(top)
- if verbose: print " Removed package tree"
- for i in range(depth+1): # Don't forget the module itself
- parts = mod_name.rsplit(".", i)
- entry = parts[0]
- del sys.modules[entry]
- if verbose: print " Removed sys.modules entries"
- del sys.path[0]
- if verbose: print " Removed sys.path entry"
-
- def _check_module(self, depth):
- pkg_dir, mod_fname, mod_name = (
- self._make_pkg("x=1\n", depth))
- try:
- if verbose: print "Running from source:", mod_name
- d1 = run_module(mod_name) # Read from source
- __import__(mod_name)
- os.remove(mod_fname)
-
- #--- the block below is to check that "imp.find_module"
- #--- manages to import the .pyc file alone. We don't
- #--- support it in PyPy in the default configuration.
- return
-
- if verbose: print "Running from compiled:", mod_name
- d2 = run_module(mod_name) # Read from bytecode
- finally:
- self._del_pkg(pkg_dir, depth, mod_name)
- assert d1["x"] == d2["x"] == 1
- if verbose: print "Module executed successfully"
-
- def test_run_module(self):
- for depth in range(4):
- if verbose: print "Testing package depth:", depth
- self._check_module(depth)
-
More information about the Pypy-commit
mailing list