mirror of
https://github.com/python/cpython.git
synced 2025-08-30 05:35:08 +00:00
Derived from SF patch #446899 Permit import of .pyw under Windows, from
David Bolen.
This commit is contained in:
parent
289898cdbb
commit
c173137391
4 changed files with 72 additions and 50 deletions
|
@ -16,49 +16,56 @@ else:
|
|||
# Another brief digression to test the accuracy of manifest float constants.
|
||||
import double_const # don't blink -- that *was* the test
|
||||
|
||||
def test_with_extension(ext): # ext normally ".py"; perhaps ".pyw"
|
||||
source = TESTFN + ext
|
||||
pyo = TESTFN + ".pyo"
|
||||
if sys.platform.startswith('java'):
|
||||
pyc = TESTFN + "$py.class"
|
||||
else:
|
||||
pyc = TESTFN + ".pyc"
|
||||
|
||||
f = open(source, "w")
|
||||
print >> f, "# This tests Python's ability to import a", ext, "file."
|
||||
a = random.randrange(1000)
|
||||
b = random.randrange(1000)
|
||||
print >> f, "a =", a
|
||||
print >> f, "b =", b
|
||||
f.close()
|
||||
|
||||
try:
|
||||
try:
|
||||
mod = __import__(TESTFN)
|
||||
except ImportError, err:
|
||||
raise ValueError("import from %s failed: %s" % (ext, err))
|
||||
|
||||
if mod.a != a or mod.b != b:
|
||||
print a, "!=", mod.a
|
||||
print b, "!=", mod.b
|
||||
raise ValueError("module loaded (%s) but contents invalid" % mod)
|
||||
finally:
|
||||
os.unlink(source)
|
||||
|
||||
try:
|
||||
try:
|
||||
reload(mod)
|
||||
except ImportError, err:
|
||||
raise ValueError("import from .pyc/.pyo failed: %s" % err)
|
||||
finally:
|
||||
try:
|
||||
os.unlink(pyc)
|
||||
except os.error:
|
||||
pass
|
||||
try:
|
||||
os.unlink(pyo)
|
||||
except os.error:
|
||||
pass
|
||||
del sys.modules[TESTFN]
|
||||
|
||||
sys.path.insert(0, os.curdir)
|
||||
|
||||
source = TESTFN + ".py"
|
||||
pyo = TESTFN + ".pyo"
|
||||
if sys.platform.startswith('java'):
|
||||
pyc = TESTFN + "$py.class"
|
||||
else:
|
||||
pyc = TESTFN + ".pyc"
|
||||
|
||||
f = open(source, "w")
|
||||
print >> f, "# This will test Python's ability to import a .py file"
|
||||
a = random.randrange(1000)
|
||||
b = random.randrange(1000)
|
||||
print >> f, "a =", a
|
||||
print >> f, "b =", b
|
||||
f.close()
|
||||
|
||||
try:
|
||||
try:
|
||||
mod = __import__(TESTFN)
|
||||
except ImportError, err:
|
||||
raise ValueError, "import from .py failed: %s" % err
|
||||
|
||||
if mod.a != a or mod.b != b:
|
||||
print a, "!=", mod.a
|
||||
print b, "!=", mod.b
|
||||
raise ValueError, "module loaded (%s) but contents invalid" % mod
|
||||
test_with_extension(".py")
|
||||
if sys.platform.startswith("win"):
|
||||
for ext in ".PY", ".Py", ".pY", ".pyw", ".PYW", ".pYw":
|
||||
test_with_extension(ext)
|
||||
finally:
|
||||
os.unlink(source)
|
||||
|
||||
try:
|
||||
try:
|
||||
reload(mod)
|
||||
except ImportError, err:
|
||||
raise ValueError, "import from .pyc/.pyo failed: %s" % err
|
||||
finally:
|
||||
try:
|
||||
os.unlink(pyc)
|
||||
except os.error:
|
||||
pass
|
||||
try:
|
||||
os.unlink(pyo)
|
||||
except os.error:
|
||||
pass
|
||||
|
||||
del sys.path[0]
|
||||
del sys.path[0]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue