Python 2.5 fixes..

* "with" handling.
* Go over 2.5 runtest.sh exclusions
This commit is contained in:
rocky
2019-12-09 06:57:02 -05:00
parent 8c879c02de
commit 99b8a99ffa
4 changed files with 32 additions and 8 deletions

View File

@@ -11,7 +11,7 @@ PYTHON_VERSION = sys.version_info[0] + (sys.version_info[1] / 10.0)
x = 1e300
assert 0.0 == x * 0
assert x * 1e300 == float("inf")
if PYTHON_VERSION > 2.4:
if PYTHON_VERSION > 2.41:
assert str(float("inf") * 0.0) == "nan"
else:
assert str(float("inf") * 0.0) == "-nan"

View File

@@ -34,10 +34,17 @@ case $PYVERSION in
SKIP_TESTS=(
[test_dis.py]=1 # We change line numbers - duh!
[test_grp.py]=1 # Long test - might work Control flow?
[test_pwd.py]=1 # Long test - might work? Control flow?
[test_pep247.py]=1 # Long test - might work? Control flow?
[test_pwd.py]=1 # Long test - might work? Control flow?
[test_pyclbr.py]=1 # Bug in checkModule()/ismethod() try confused for try-else
[test_pyexpat.py]=1 # Investigate
[test_queue.py]=1 # Control flow?
# [test_threading.py]=1 # Long test - works
[test_re.py]=1 # try confused with try-else again
[test_socketserver.py]=1 # -- test takes too long to run: 40 seconds
[test_threading.py]=1 # Line numbers are expected to be different
[test_thread.py]=1 # test takes too long to run: 36 seconds
[test_trace.py]=1 # Long test - works
[test_zipfile64.py]=1 # Runs ok but takes 204 seconds
)
;;
2.5)
@@ -47,9 +54,17 @@ case $PYVERSION in
[test_grammar.py]=1 # Too many stmts. Handle large stmts
[test_grp.py]=1 # Long test - might work Control flow?
[test_pdb.py]=1 # Line-number specific
[test_pep247.py]=1 # "assert xxx or .." not detected properly in check_hash_module()
[test_pep352.py]=1 # try confused with try-else again; in test_inheritance()
[test_pwd.py]=1 # Long test - might work? Control flow?
[test_pyclbr.py]=1 # Bug in checkModule()/ismethod() try confused for try-else
[test_queue.py]=1 # Control flow?
[test_re.py]=1 # Probably Control flow?
[test_re.py]=1 # Possibly try confused with try-else again
[test_struct.py]=1 # "if and" confused for if .. assert and
[test_sys.py]=1 # try confused with try-else again; in test_current_frames()
[test_tarfile.py]=1 # try confused with try-else again; top-level import
[test_threading.py]=1 # Line numbers are expected to be different
[test_thread.py]=1 # test takes too long to run: 36 seconds
[test_trace.py]=1 # Line numbers are expected to be different
[test_zipfile64.py]=1 # Runs ok but takes 204 seconds
)
@@ -94,6 +109,7 @@ case $PYVERSION in
[test_re.py]=1 # Probably Control flow?
[test_queue.py]=1 # Control flow?
[test_trace.py]=1 # Line numbers are expected to be different
[test_urllib2net.py]=1 # Fails on its own. May need interactive input
[test_zipfile64.py]=1 # Skip Long test
[test_zlib.py]=1 # Takes too long to run (more than 3 minutes 39 seconds)
# .pyenv/versions/2.6.9/lib/python2.6/lib2to3/refactor.pyc

View File

@@ -25,11 +25,17 @@ class Python25Parser(Python26Parser):
setupwithas ::= DUP_TOP LOAD_ATTR store LOAD_ATTR CALL_FUNCTION_0
setup_finally
# opcode SETUP_WITH
setupwith ::= DUP_TOP LOAD_ATTR STORE_NAME LOAD_ATTR CALL_FUNCTION_0 POP_TOP
withstmt ::= expr setupwith SETUP_FINALLY suite_stmts_opt
POP_BLOCK LOAD_CONST COME_FROM with_cleanup
setupwith ::= DUP_TOP LOAD_ATTR store LOAD_ATTR CALL_FUNCTION_0 POP_TOP
withstmt ::= expr setupwith SETUP_FINALLY suite_stmts_opt
POP_BLOCK LOAD_CONST COME_FROM with_cleanup
# Semantic actions want store to be at index 2
withasstmt ::= expr setupwithas store suite_stmts_opt
POP_BLOCK LOAD_CONST COME_FROM with_cleanup
store ::= STORE_NAME
store ::= STORE_FAST
# tryelsetmtl doesn't need COME_FROM since the jump might not
# be the the join point at the end of the "try" but instead back to the

View File

@@ -71,6 +71,9 @@ def customize_for_version(self, is_pypy, version):
TABLE_DIRECT.update(
{"except_cond3": ("%|except %c, %c:\n", (1, "expr"), (-2, "store"))}
)
if version <= 2.6:
TABLE_DIRECT["testtrue_then"] = TABLE_DIRECT["testtrue"]
if 2.4 <= version <= 2.6:
TABLE_DIRECT.update({"comp_for": (" for %c in %c", 3, 1)})
else:
@@ -134,7 +137,6 @@ def customize_for_version(self, is_pypy, version):
}
)
if version == 2.4:
def n_iftrue_stmt24(node):
self.template_engine(("%c", 0), node)
self.default(node)