Compare commits

...

266 Commits

Author SHA1 Message Date
rocky
1bfa4228d6 Administrivia 2020-05-19 01:27:54 -04:00
rocky
6116eb64d1 Bump version 2020-05-19 01:25:38 -04:00
rocky
cb411bcd04 Merge branch 'master' into python-2.4 2020-05-19 01:24:08 -04:00
rocky
889417caeb Get ready for release 3.7.0 2020-05-19 01:17:58 -04:00
rocky
5a83c7c643 Simplify imports again using xdis 4.6.0 2020-05-19 00:53:53 -04:00
rocky
31db2f3e04 Small typo 2020-05-18 23:29:33 -04:00
rocky
527d1b4163 Merge branch 'master' into python-2.4 2020-05-18 23:25:53 -04:00
rocky
7fa851765d Regularize "or" so args are in 1..2 and ...
correct "return None" semantic action
2020-05-18 22:55:26 -04:00
rocky
d7c3b8454b 3.8 needs call_stmt -> call
Simplify/regularize how "return" works
2020-05-18 22:26:18 -04:00
rocky
3fb8d90407 Revise for xdis 3.6.0 ...
Simplify xdis imports where we can.
Blacken (most) of those buffers too
2020-05-18 21:49:16 -04:00
rocky
ff43565981 3.4-3.4 mixed "and"/"or" parsing ...
Fix by limiting more the bogus come from.
2020-05-18 05:33:57 -04:00
rocky
4365022f40 Adapt decompyle3's 3.8 try/return grammar rules 2020-05-17 10:18:10 -04:00
rocky
d343384db7 A runnable "async" and "async with" test 2020-05-16 07:55:51 -04:00
rocky
87a891ca54 Skip 2.6 test until I can get around to it. 2020-05-14 23:50:55 -04:00
rocky
b94c649776 3.7 change rule to match op "or" expr's 2020-05-14 21:32:45 -04:00
R. Bernstein
f34375ba99 Create FUNDING.yml 2020-05-14 12:12:18 -04:00
rocky
81b704f597 Simpify an import, blacken a file. 2020-05-09 09:32:44 -04:00
rocky
5233a0716b Correct wong class names in super() 2020-05-08 05:59:20 -04:00
rocky
f82b862c25 Merge branch 'master' into python-2.4 2020-05-05 22:20:54 -04:00
rocky
a810ed1280 Merge branch 'master' of github.com:rocky/python-uncompyle6 2020-05-05 22:18:22 -04:00
rocky
ab54caae34 Runtest.sh improvements 2020-05-05 22:18:15 -04:00
rocky
d3cf87e2d9 Start marking test suite since this is going to be copied 2020-05-04 11:43:16 -04:00
rocky
c5228dbdc4 Small test doc typo 2020-05-01 23:19:31 -04:00
rocky
cafe96a44a Merge branch 'master' into python-2.4 2020-04-30 18:00:37 -04:00
rocky
a72163f6f9 lint 2020-04-30 18:00:04 -04:00
rocky
3e1300eb23 Bugs in nested async for...
* Generalize asyc_for rule
 Fix bug in picking out comprehension iterator in async for
* fix bug in getting expression in such a comprehension
* Add %[n]{%x} pattern to template_engine()
2020-04-29 10:12:54 -04:00
rocky
a4eaeea5b2 See above. 2020-04-27 23:05:05 -04:00
rocky
1141dfefc2 Typo in appveyor config 2020-04-27 23:03:46 -04:00
rocky
fe5cea7042 Merge branch 'master' into python-2.4 2020-04-27 23:01:53 -04:00
rocky
302a5d53d4 Get ready for release 3.6.7 2020-04-27 22:52:39 -04:00
R. Bernstein
698a3073d0 Merge pull request #313 from rocky/task/separate-dis
Task/separate dis
2020-04-24 02:29:52 -04:00
rocky
e6adf822cc Bump xdis version now that this is released 2020-04-24 02:25:07 -04:00
rocky
8c5acef792 Appveyor needs to install xdis from github 2020-04-21 23:03:00 -04:00
rocky
7578253f7d CI from xdis *branch* 2020-04-21 22:49:14 -04:00
rocky
9e193fd7cb Track branch changes in xdis 2020-04-21 22:42:57 -04:00
rocky
ab6b12be56 Small fixes in fragment parser 2020-04-21 19:58:03 -04:00
rocky
6981743788 Merge branch 'master' into python-2.4 2020-04-21 13:49:52 -04:00
rocky
5bd97aa756 lint 2020-04-21 13:49:05 -04:00
rocky
5237d704fa Remove stray debug stmt 2020-04-20 23:13:06 -04:00
rocky
0e0c5b91fc Merge branch 'master' into python-2.4 2020-04-20 23:11:19 -04:00
rocky
a01285e4a9 Get ready for release 3.6.6 2020-04-20 22:23:58 -04:00
rocky
1d7e8f1617 Update to use xdis 4.4.0 ...
with more correct SipHash and other needed bug fixes.
2020-04-20 10:47:34 -04:00
rocky
ced33a8f0b 3.8 "and" detection is failing. Works on decompyle3 though 2020-04-18 23:47:32 -04:00
rocky
dc7f1ed0cc Final remnants of xdis fixes?
Restore the last of the excluded bytecode.
2020-04-18 23:24:56 -04:00
rocky
fc00d394ec And restore a 3.7 test 2020-04-18 23:21:00 -04:00
rocky
e2baccb4e5 Reinstate 3.5 tests 2020-04-18 23:18:24 -04:00
rocky
c99cf7a653 Try reinstating one more bytecode file 2020-04-18 23:11:42 -04:00
rocky
999eee4b5f More xdis upgrade fixes...
LOAD_CONST of unicode in 2.7- is the same thing as LOAD_STR.

I guess previously there was no unicode.
2020-04-18 22:26:24 -04:00
rocky
9ca94717e0 Yet another workaround 2020-04-18 19:53:04 -04:00
rocky
b77efec36c git commit -m'Adjust "or" offset check ...
for Python < 3.6 hopefully it doesn't break Python 3.6+
2020-04-18 19:21:59 -04:00
rocky
17d07eaf00 continuing xdis refactor aftermath...
Both 2.7 bytecode broken from the refactor have now been reinstated, but
two 3.5 and 3.6 bytecode have moved into the "todo" category.
2020-04-18 18:47:06 -04:00
rocky
538c2e7efd More regressions with some fixes 2020-04-17 00:06:39 -04:00
rocky
ebc22e32e6 TravisCI: try to get xdis from github 2020-04-16 23:53:44 -04:00
rocky
4796fb9e70 "or" rule regularization + regressions from xdis 2020-04-16 23:45:39 -04:00
rocky
ea81ac7202 Reinstate previously failing tests 2020-04-16 17:16:38 -04:00
rocky
2fd61b1016 Add 3.7ish "or" check 2020-04-16 16:35:27 -04:00
rocky
b29a008cb3 2.7 or reduce check rule 2020-04-16 16:24:40 -04:00
rocky
3bfc51e34b Merge branch 'master' into python-2.4 2020-04-16 15:56:58 -04:00
rocky
ebd0eaa609 Bug minimum xdis version 2020-04-16 15:48:28 -04:00
rocky
badfe5456f Track "or" grammar changes...
Remove re deprecation warning
2020-04-16 15:25:42 -04:00
rocky
486f10be6c grammar normalization for "or" rule...
tracks what's been going on in master.
2020-04-16 14:00:48 -04:00
rocky
f5bcdeec95 Merge branch 'master' into python-2.4 2020-04-16 13:09:07 -04:00
rocky
f117feb585 Use new xdis...
Sadly there are some regressions that need to be fixed.

Deal with later.
2020-04-16 11:01:12 -04:00
rocky
204b07c996 Bump for botched xdis release 2020-04-16 10:10:54 -04:00
rocky
869e48877c Convert to use xdis 4.3.0 or greater 2020-04-16 08:41:53 -04:00
rocky
880a60c3e4 Merge branch 'master' into python-2.4 2020-04-11 09:58:36 -04:00
rocky
7ed40d5f6e Adjust _mklambda vs. yield precedence 2020-04-11 09:54:03 -04:00
rocky
5c6365d8a1 Go over "yield" and other precedence 2020-04-09 20:27:07 -04:00
rocky
42d3c4db61 3.8 Excludes 2020-04-05 12:09:48 -04:00
rocky
f3b102600e Linging bug from HEAD~ changes 2020-04-04 10:33:21 -04:00
rocky
f6a13302fb Bugs introduced in last commit 2020-04-04 10:26:46 -04:00
rocky
e8e7d2086d whileelse in 3.6 sometimes has come froms...
also remove extra "L. " in token printing
2020-04-04 10:12:12 -04:00
rocky
1367709399 Scale back 3.6.10 pyenvlib testing...
fails on _pyio.cpython-36.opt-1.pyc
2020-04-04 05:21:24 -04:00
rocky
3dcc20f6d7 Small spelling typo...
Fixes #311
2020-04-04 02:38:32 -04:00
rocky
5c83de830f Merge branch 'master' of github.com:rocky/python-uncompyle6 2020-04-04 02:34:08 -04:00
rocky
451f0b55bb Merge branch 'master' of https://github.com/rocky/python-uncompyle6 2020-04-01 12:44:07 -04:00
rocky
a5704cd462 3.8 excludes 2020-04-01 12:43:28 -04:00
rocky
52fbf1d6a7 Typos 2020-04-01 11:48:58 -04:00
rocky
0a3f951682 Administrivia 2020-04-01 11:35:50 -04:00
rocky
0cb0de53ae Merge branch 'master' into python-2.4 2020-04-01 11:29:10 -04:00
rocky
7b4059820f Get ready for release 3.6.5 2020-04-01 11:18:20 -04:00
rocky
9caac7fc84 Small tweaks ...
* Remove unneeded Makefile
* sync n_ifelsesmt transform with decompyle3
2020-04-01 11:00:25 -04:00
rocky
ceb26d29fd 3.5- doesn't do format strings 2020-04-01 10:03:10 -04:00
rocky
9ec1c420e7 Merge branch 'master' of github.com:rocky/python-uncompyle6 2020-04-01 09:49:11 -04:00
rocky
a616e1e1c7 "withstmt" -> "with" and fix async for 2020-04-01 09:48:34 -04:00
rocky
b839abcfe7 run-and-email.sh seemed borked 2020-04-01 09:33:18 -04:00
rocky
e2d349f781 Handle nested async for in for...
and Better async comprehension detection.

Still more work is needed. See commented-out section in
test/simple_source/bug37/02_async_for_generator.py
2020-03-31 12:05:39 -04:00
rocky
af8add9df4 Bug in finding annotation in fn with docstring 2020-03-31 11:13:12 -04:00
rocky
3afc5a599a Fix one more call to ParseError 2020-03-31 10:46:00 -04:00
rocky
663bc06bb9 Fix one more call to ParseError 2020-03-31 10:44:52 -04:00
rocky
f57a238e47 Merge branch 'master' into python-2.4 2020-03-31 10:31:44 -04:00
rocky
63d6054640 One more ParserError() upgrade 2020-03-31 10:29:52 -04:00
rocky
57109ed066 Conversion from 2.7+ 2020-03-31 10:27:08 -04:00
rocky
c52af6cee9 Merge branch 'master' into python-2.4 2020-03-31 10:26:42 -04:00
rocky
1c8805ecc9 Merge branch 'master' of github.com:rocky/python-uncompyle6 2020-03-31 10:14:27 -04:00
rocky
5fde4f2e05 Show token number in parser error listing...
But only if -g is given
2020-03-31 10:12:52 -04:00
rocky
b030a5ac2b pypy 3.6 7.3.0 tolerance...
more work is need on the tests though
2020-03-28 19:53:07 -04:00
rocky
bd9a8261fa Merge branch 'master' into python-2.4 2020-03-25 10:59:21 -04:00
rocky
01ea45a3f5 Administrivia - bump versions 2020-03-25 10:58:37 -04:00
rocky
2b2e7d3242 Bump xdis and pyenv versions, 2020-03-16 16:44:34 -04:00
rocky
2448f24764 Exclude a test on POWER7 2020-02-20 10:46:32 -05:00
rocky
0e4e45518d Merge branch 'master' into python-2.4 2020-02-17 16:17:26 -05:00
rocky
299fd93125 One more excluded test 2020-02-16 21:55:47 -05:00
rocky
d9b2d66843 Runtests tweak 2020-02-16 19:53:03 -05:00
rocky
bb5bbc9645 Merge branch 'python-2.4' of github.com:rocky/python-uncompyle6 into python-2.4
Conflicts:
	test/run-and-email.sh
2020-02-16 19:37:23 -05:00
rocky
283db0faea run-and-email.sh tweak 2020-02-16 19:35:17 -05:00
rocky
049a3415a7 Merge branch 'master' into python-2.4 2020-02-16 18:28:49 -05:00
rocky
d070a28635 More run-and-email.sh tweaks 2020-02-16 18:26:21 -05:00
rocky
092874f8b5 Go over runtests.sh excludes 2020-02-16 17:49:56 -05:00
rocky
5a6a41a608 run-and-email tweaks 2020-02-16 17:35:57 -05:00
rocky
201635de7b run-and-email message tweak 2020-02-16 12:06:42 -05:00
rocky
3d2fc7a5e6 run-and-email message tweak 2020-02-16 11:59:21 -05:00
rocky
2a040bee5f Tweak to run-and-email message 2020-02-16 11:04:58 -05:00
rocky
81899a82c3 Allow inverted test names in "stdlib/runtests.sh" 2020-02-15 12:00:38 -05:00
rocky
76085a3040 Better runtsts BATCH variable handling 2020-02-15 09:26:45 -05:00
rocky
3bd29b9c9a Merge branch 'master' into python-2.4 2020-02-15 08:12:52 -05:00
rocky
35127452f5 Bug found by 2.4 sre_parse.py testing 2020-02-15 08:06:58 -05:00
rocky
970cad7cc7 More 3.x runtests excludes 2020-02-15 06:01:57 -05:00
rocky
69064f4c23 runtests.sh exclude test_cmath.py in 3.x for now 2020-02-15 05:26:49 -05:00
rocky
28ef04d141 More bugs found via sre_parse.py decompilation 2020-02-15 05:10:11 -05:00
rocky
d4381ef73f More bugs found via sre_parse.py decompilation 2020-02-15 05:04:42 -05:00
rocky
3918bf248d Correct a comment 2020-02-14 22:47:48 -05:00
rocky
fd36c77d2d Bugs found in 2.4 branch testing 2020-02-14 10:54:37 -05:00
rocky
a37ae1be0d Fix parsing bug in 2.3 and 2.4 from sre.py 2020-02-14 10:45:06 -05:00
rocky
108c6ecfe3 Small tweak in mailbody line 2020-02-14 08:41:52 -05:00
rocky
534afb3f6e run-and-email tweaks 2020-02-13 21:14:36 -05:00
rocky
9f4458db9a better batch testing for older Pythons 2020-02-13 21:04:26 -05:00
rocky
ac7bec5ad8 Merge branch 'master' into python-2.4 2020-02-13 18:34:08 -05:00
rocky
874d196e5c 3.x ifelsestmtc reduction rule fix 2020-02-13 05:41:15 -05:00
rocky
dca2224520 Go over 3.3 and 3.4 runtest exclusions 2020-02-13 04:37:11 -05:00
rocky
e90455dcb8 transform ifelseif bugs 2020-02-13 04:31:16 -05:00
rocky
6dd97568f6 More information run-and-email.sh scripts...
Log status for each version.
2020-02-11 14:27:10 -05:00
rocky
aa6849a570 Add host to email on failure 2020-02-10 21:19:15 -05:00
rocky
749493631c cd not chdir for POSIX shell 2020-02-10 21:15:32 -05:00
rocky
7b3c91d23a Another 3.7 runtest exclude 2020-02-10 20:21:58 -05:00
rocky
74848140c5 Script typo 2020-02-10 18:36:10 -05:00
rocky
9db3f1cf1d Merge branch 'master' into python-2.4 2020-02-10 18:26:56 -05:00
rocky
bd0fdd0002 Start older-python testing 2020-02-10 18:24:33 -05:00
rocky
c62daaf0b7 3.5 exclusions 2020-02-10 18:07:35 -05:00
rocky
66d8526d7f Show host in subject; set BATCH explicitly 2020-02-10 17:38:50 -05:00
rocky
66db4cc862 2.7 runtest exclusion 2020-02-10 17:17:15 -05:00
rocky
bf288b1871 Fix bug introduced by ast "tranform" change 2020-02-10 16:13:57 -05:00
rocky
d2f6223e14 3.x exclusions 2020-02-10 12:35:24 -05:00
rocky
9d5a4c822e Runtests excludes 2020-02-10 12:09:25 -05:00
rocky
05e0a5661a runtest 3.6 excludes 2020-02-10 11:26:44 -05:00
rocky
76287162da Fix ifelif transformation for earlier Pythons 2020-02-10 11:16:32 -05:00
rocky
d64fa6ba50 3.6 runtests excludes 2020-02-10 10:59:03 -05:00
rocky
b76f7f905c 3.6 runtest exclude 2020-02-10 10:19:18 -05:00
rocky
c31384ef81 3.6 runtests exclusions 2020-02-10 09:40:33 -05:00
rocky
727dabff6a is_docsting needs to test for sstmts 2020-02-10 09:19:03 -05:00
rocky
946d74ad36 Fix bug in 3.0 name module detection 2020-02-10 08:58:48 -05:00
rocky
ebad4e2a9a Readme link typo 2020-02-09 13:36:53 -05:00
rocky
799570d068 Merge branch 'python-2.4' of github.com:rocky/python-uncompyle6 into python-2.4 2020-02-09 13:35:06 -05:00
rocky
3db66fad1d Merge branch 'master' into python-2.4 2020-02-09 13:34:08 -05:00
rocky
4e6c449250 Merge branch 'master' into python-2.4 2020-02-09 13:30:18 -05:00
rocky
e342ef89e3 Get ready for release 3.6.4 2020-02-09 13:26:53 -05:00
rocky
57d59aa481 Update README.rst 2020-02-09 12:44:21 -05:00
rocky
da119a31f7 Update README.rst 2020-02-09 12:41:52 -05:00
rocky
ae9f83c191 CircleCI try 15 2020-02-09 10:49:58 -05:00
rocky
846020bf5a CircleCI try 14 2020-02-09 10:46:21 -05:00
rocky
cf5c81ab21 CircleCI try 13 2020-02-09 10:44:27 -05:00
rocky
244ab4e3b3 CircleCI try 12 2020-02-09 10:43:24 -05:00
rocky
07290bd443 CircleCI try 11 2020-02-09 10:42:28 -05:00
rocky
ef9c34098a CircleCI try 10 2020-02-09 10:41:30 -05:00
rocky
57bca5102d CircleCI try 9 2020-02-09 10:32:05 -05:00
rocky
a29d1e1531 CircleCI try 8 2020-02-09 10:28:20 -05:00
rocky
3d649e049b CircleCI try 7 2020-02-09 10:27:01 -05:00
rocky
26a7b984aa CircleCI try 6 2020-02-09 10:17:09 -05:00
rocky
9b41dfd951 CircleCI try 5 2020-02-09 10:14:41 -05:00
rocky
1091d32882 CircleCI try 4 2020-02-09 10:09:37 -05:00
rocky
432859d677 CircleCI try 3 2020-02-09 10:04:30 -05:00
rocky
25b7752915 CircleCI try 2 2020-02-09 10:01:54 -05:00
rocky
bac3fea8cd Merge branch 'master' into python-2.4 2020-02-09 09:55:41 -05:00
rocky
6545d9a03b runtests excludes again 2020-02-09 09:42:38 -05:00
rocky
8ac35ad8ce Need to back off ifelsetesting on 2.7...
until we can more fully untangle if stmts in loops.
Current tests break urllib2.pyc and cgi.pyc
2020-02-09 09:01:32 -05:00
rocky
8836444be2 Correct ifelsestmtc rules for 3.x 2020-02-09 08:14:44 -05:00
rocky
339b4c56ee Typo 2020-02-09 07:38:32 -05:00
rocky
6cbb631aa6 In lambda code we, no stinking bogus yield 2020-02-09 07:32:06 -05:00
rocky
5355cb5404 async with rules back to 3.5 and ...
add precidence on cascaded "await" expressions
2020-02-08 20:31:06 -05:00
rocky
8495d208fb 3.7+ "async with" handling from decompyle3 2020-02-08 19:48:09 -05:00
rocky
e1758a8730 3.5 runtests exclusions 2020-02-08 15:50:12 -05:00
rocky
c1a825fbbb 3.6 runtests exclusions 2020-02-08 15:46:00 -05:00
rocky
8f2e408da2 Another 3.5 runtest exclusion 2020-02-08 15:25:42 -05:00
rocky
e2504c2421 3.7 ifelstmtl reduction rule checking 2020-02-08 13:47:05 -05:00
rocky
1d7085e5d2 Add 3.5 runtest exclusion 2020-02-08 12:07:35 -05:00
rocky
65707fa0f8 FIx bug that snuck in last commit. 2020-02-08 12:01:56 -05:00
rocky
b0931275a2 Need more precise "assert" for 3.8...
Add rule for ifelsestmtl which is needed in 3.8
2020-02-08 11:46:19 -05:00
rocky
7c73536b4a 3.6 "assert" and "or" handling bugs 2020-02-08 07:27:31 -05:00
rocky
946d46a574 Fix Python 3.6 "if" parse failures in loops...
This fixes all the pyenv parse errors that were introduced in the last refactor.
2020-02-08 05:21:42 -05:00
rocky
2b50cb56d7 One more 3.6 runtest exclude 2020-02-07 20:53:31 -05:00
rocky
6d5fb21363 Go over 3.2-3.6 runtests.sh exludes...
Reinstate a lot of tests broken since c90ff51
2020-02-07 20:09:40 -05:00
rocky
bd7d74fa5d 3.7 excludes again 2020-02-07 19:44:24 -05:00
rocky
c93a7a728b Add decompyle3 ifelsestmt reduction rule...
and Go over 3.3 and 3.7 runtests excludes
2020-02-07 19:22:23 -05:00
R. Bernstein
26a554c5c7 Merge pull request #306 from rocky/ifexp_from_conditional
if_exp from conditional
2020-02-07 18:26:12 -05:00
rocky
cb35ad906c One more if_exp use (ret_cond) 2020-02-07 16:34:48 -05:00
rocky
278af38df6 conditional -> if_exp ...
to match Python IfExp AST
2020-02-07 16:17:47 -05:00
rocky
7fb50918cd Bug in "async for" indentation 2020-02-06 23:54:03 -05:00
rocky
6525ade805 Comment tweaks 2020-02-06 20:37:40 -05:00
rocky
73951840b6 Correct last commit 2020-02-06 20:19:29 -05:00
rocky
3438e76865 "return locals()" change to track grammar change 2020-02-06 20:08:00 -05:00
rocky
7480af33d9 CircleCI again 2020-02-06 05:24:02 -05:00
rocky
88b2be70d2 CircleCI again 2020-02-06 05:22:48 -05:00
rocky
73de86728a CircleCI again 2020-02-06 05:21:45 -05:00
rocky
f743639bb6 CircleCI again 2020-02-06 05:20:02 -05:00
rocky
321c7906cd CircleCI again 2020-02-06 05:18:35 -05:00
rocky
06b281d1d8 Try to expand CircleCI testing 2020-02-06 05:14:29 -05:00
rocky
a99d8da0b4 Fix Recent CI bug 2020-02-06 05:10:57 -05:00
rocky
73e6409594 Fix recent CI bug 2020-02-06 05:09:17 -05:00
rocky
e93628d2dd Update CircleCI to test with 3.6.10 2020-02-06 05:04:39 -05:00
rocky
e41cd9be84 hide __qualname__ and name modules again...
due to recent grammar change
2020-02-06 03:19:56 -05:00
rocky
9166fb54a1 Adjust a couple of "assert"s 2020-02-04 22:06:48 -05:00
rocky
3120de0c02 Go over older 2.4 runtests failures 2020-02-04 22:01:49 -05:00
rocky
9cc9bceadf Go over older 2.x exclusions 2020-02-04 21:57:20 -05:00
rocky
36e09738c3 Merge branch 'master' into python-2.4 2020-02-04 21:34:15 -05:00
rocky
68c9de60a5 Adjust assert transform for new "if_and" rule 2020-02-04 21:28:08 -05:00
rocky
90439c562f Python 2.5 runtests exclusions 2020-02-04 20:30:19 -05:00
rocky
d9975defe9 Merge branch 'master' into python-2.4 2020-02-04 20:21:35 -05:00
rocky
621bc96e8a Ensure offset is an int in offset test 2020-02-04 20:20:40 -05:00
rocky
6f4ec21ae2 __modname__ and __qualname__ detection...
since grammar has simplified.

May still need work for Python < 3.0
2020-02-02 19:09:50 -05:00
rocky
83e27bc427 Reinstate some 3.0 tests 2020-02-02 17:45:17 -05:00
rocky
9aae8f85c7 Bug introduced by last commit 2020-02-02 13:11:03 -05:00
rocky
04f8619cf1 Better docstring recognition 2020-02-02 13:02:37 -05:00
rocky
610994277c 2.7 ifelsestmt reduction rule futzing 2020-02-02 07:52:08 -05:00
rocky
6fff0fc5a2 More assert transform opportunities 2020-02-02 06:46:48 -05:00
rocky
e4a196278a More control-flow testing based on past failures...
Some of these still cause problems. Sigh.
2020-02-02 06:08:19 -05:00
rocky
425b50cf1c Merge branch 'master' into python-2.4 2020-02-02 05:38:27 -05:00
rocky
6e5666c001 Merge branch 'master' of github.com:rocky/python-uncompyle6 2020-02-02 05:37:37 -05:00
rocky
38e2b8a10b Go over docstring handling 2020-02-02 05:37:07 -05:00
rocky
2216eb7b01 Merge branch 'master' into python-2.4 2020-02-01 22:29:10 -05:00
rocky
5d1bf2dd9b adjust "assert" transformation due to grammar ...
simplification
2020-02-01 22:27:17 -05:00
rocky
de1e7d423c A more correct offset2inst_index update. 2020-02-01 21:02:45 -05:00
rocky
16a51961c3 Add tests based on recent runtests.sh failures...
These run quicker and are distilled to simple examples.
2020-02-01 20:32:23 -05:00
rocky
0798078d7e See previous commit msg 2020-02-01 12:30:51 -05:00
rocky
db3c687784 See previous commit msg 2020-02-01 12:27:06 -05:00
rocky
0fafb38d35 Typo 2020-02-01 12:14:34 -05:00
rocky
f426101000 Another runtests.sh exclude for now 2020-02-01 12:11:51 -05:00
rocky
cf505545c0 3.6 iflastlstmt rule checking again 2020-02-01 12:00:08 -05:00
rocky
45c725feae 3.6 iflaststmtl doesn't follow ifstmt rules...
like iflaststmt does. test_dbm_dumb.py shows this
2020-02-01 11:20:58 -05:00
rocky
4dc64063d1 Small change 2020-02-01 11:14:19 -05:00
rocky
cdc5642715 More reduction checks...
Those in reduce check as well as those listed in parse{2,3}.

3.6 iflastsmtl needs ifstmt checking.
2020-02-01 07:10:30 -05:00
rocky
4f4850d9f7 Restrict "and" reduction checking to Python 3.6 2020-02-01 04:42:46 -05:00
rocky
451b18ee57 2.7 tryelse rule check disambiguation. 2020-02-01 04:05:50 -05:00
rocky
2d1ea6b02b See previous commit 2020-01-31 21:12:59 -05:00
rocky
f279cc2d70 ifelsesmt for 2.7 yet again 2020-01-31 21:10:24 -05:00
rocky
cb1b2a8759 Typo in last commit 2020-01-31 19:11:13 -05:00
rocky
d64158b299 No iflastlstmt reduce check for python < 3.6...
just yet
2020-01-31 19:07:28 -05:00
rocky
2ea8a2ef7f was getting testlastl reduce rule from wrong place 2020-01-31 17:37:47 -05:00
rocky
258fac3201 limit 3.x scope of ifelstmt reduction check to 3.6
at least for now. Again, we need major cleanup of this stuff, but that
will be done later.
2020-01-31 16:22:32 -05:00
rocky
7c012ebdfc Remove duplicate stmt 2020-01-31 15:50:46 -05:00
rocky
f27b72ab05 Work around 2.7 phony come-froms in ifelsesmt 2020-01-31 15:49:29 -05:00
rocky
be022b3416 Start ifelsestmt reduce checks in Python 2.7 2020-01-31 13:58:06 -05:00
rocky
41f1d1ec09 Remove dup statement 2020-01-31 13:18:23 -05:00
rocky
89c2805c27 Start to clean up parse3 reduction rule checks...
A lot more work is needed, but this is a start.
2020-01-31 13:10:35 -05:00
rocky
e639a30157 Add some decompyle reduction-check goodness here 2020-01-31 12:20:12 -05:00
rocky
ee2a1f62c6 runtests exclude found recently in 3.6 2020-01-31 04:46:25 -05:00
rocky
db46e096b4 See previous commit message 2020-01-31 03:53:35 -05:00
rocky
ea48944fff reinstate a test fixed recently 2020-01-31 03:08:36 -05:00
rocky
31714d3420 compile-file.py: preserve source file location 2020-01-30 21:09:34 -05:00
rocky
6466d30e2e Adjust "ifelsestmt" rule
Fixes #305
2020-01-30 19:45:32 -05:00
rocky
ef61f3a92a Add a 3.6 runtest exclude due to bad control flow 2020-01-30 18:02:44 -05:00
rocky
31468a2328 Merge branch 'master' into python-2.4 2020-01-29 15:39:46 -05:00
rocky
fdf4496a2d Track grammar "stmt" simplifications class ...
* NAME_MODULE constant
* QUAL_NAME constant
2020-01-29 15:37:58 -05:00
rocky
d39191477b Merge branch 'master' into python-2.4 2020-01-28 01:44:05 -05:00
rocky
b548910e57 IMPORT_NAME -> IMPORT_NAME_ATTR
Fixes #304
2020-01-28 01:43:20 -05:00
R. Bernstein
c5f939e90d Merge pull request #302 from hjung4/spell
fix spelling errors
2020-01-27 20:33:01 -05:00
comet
6bbafcc8dd fix spelling errors 2020-01-27 18:41:55 -06:00
159 changed files with 3678 additions and 1874 deletions

View File

@@ -1,7 +1,6 @@
version: 2
jobs:
build:
working_directory: ~/rocky/python-uncompyle6
parallelism: 1
shell: /bin/bash --login
# CircleCI 2.0 does not support environment variables that refer to each other the same way as 1.0 did.
@@ -12,9 +11,8 @@ jobs:
COMPILE: --compile
# To see the list of pre-built images that CircleCI provides for most common languages see
# https://circleci.com/docs/2.0/circleci-images/
machine:
python:
version: 2.7.14
docker:
- image: circleci/python:2.7
steps:
# Machine Setup
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
@@ -24,10 +22,6 @@ jobs:
# In many cases you can simplify this from what is generated here.
# 'See docs on artifact collection here https://circleci.com/docs/2.0/artifacts/'
- run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS
# This is based on your 1.0 configuration file or project settings
- run:
working_directory: ~/rocky/python-uncompyle6
command: pyenv install 2.4.6 && pyenv local 2.4.6 && pyenv rehash && easy_install nose && pyenv rehash
# Dependencies
# This would typically go in either a build or a build-and-test job when using workflows
# Restore the dependency cache
@@ -37,9 +31,8 @@ jobs:
# fallback to using the latest cache if no exact match is found
- v2-dependencies-
# This is based on your 1.0 configuration file or project settings
- run: easy_install xdis spark-parser
- run: pip install -e .
- run:
command: sudo easy_install xdis spark-parser && sudo pip install -e . && sudo pip install -r requirements-dev.txt
# Save dependency cache
- save_cache:
@@ -57,8 +50,8 @@ jobs:
# Test
# This would typically be a build job when using workflows, possibly combined with build
# This is based on your 1.0 configuration file or project settings
- run: python ./setup.py develop && make check-2.4
- run: cd ./test/stdlib && pyenv local 2.4.6 && bash ./runtests.sh 'test_[p-z]*.py'
- run: sudo python ./setup.py develop && make check-2.7
- run: cd test/stdlib && bash ./runtests.sh 'test_[p-z]*.py'
# Teardown
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
# Save test results

12
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: [rocky]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

1
.gitignore vendored
View File

@@ -10,6 +10,7 @@
/.pytest_cache
/.python-version
/.tox
.mypy_cache
/.venv*
/README
/__pkginfo__.pyc

88
NEWS.md
View File

@@ -1,3 +1,91 @@
3.7.0: 2020-5-19 Primidi 1st Prairial - Alfalfa - HF
====================================================
The main impetus for this release is to pull in the recent changes from xdis.
We simplify imports using xdis 4.6.0.
There were some bugfixes to Python 3.4-3.8. See the ChangeLog for details
3.6.7: 2020-4-27 xdis again
===========================
More upheaval in xdis which we need to track here.
3.6.6: 2020-4-20 Love in the time of Cholera
============================================
The main reason for this release is an incompatablity bump in xdis which handles
3.7 SipHash better.
* Go over "yield" as an expression precidence
* Some small alignment with code in decompyle3 for "or" and "and" was done
3.6.5: 2020-4-1 April Fool
==========================
Back port some of the changes in decompile3 here which mostly helps 3.7 and 3.8 decompilation, although this may also help 3.6ish versions too.
- Handle nested `async for in for...` and better async comprehension detection via `xdis`. Still more work is needed.
- include token number in listings when `-g` and there is a parser error
- remove unneeded `Makefile`s now that remake 4.3+1.5dbg is a thing that has `-c`
- Bug in finding annotations in functions with docstrings
- Fix bug found by 2.4 sre_parse.py testing
- Fix `transform` module's `ifelseif` bugs
- Fix bug in 3.0 name module detection
- Fix docstring detection
3.6.4: 2020-2-9 Plateau
=======================
The main focus in this release was fix some of the more glaring problems creapt in from the last release due to that refactor.
`uncompyle6` code is at a plateau where what is most needed is a code refactoring. In doing this, until everything refactored and replaced, decomplation may get worse.
Therefore, this release largely serves as a checkpoint before more major upheaval.
The upheaval, in started last release, I believe the pinnicle was around c90ff51 which wasn't a release. I suppose I should tag that.
After c90ff5, I started down the road of redoing control flow in a more comprehensible, debuggable, and scalable way. See [The Control Flow Mess](https://github.com/rocky/python-uncompyle6/wiki/The-Control-Flow-Mess)
The bulk of the refactoring going on in the [decompyle3](https://github.com/rocky/python-decompil3) project, but I try to trickle down the changes.
It is tricky because the changes are large and I have to figure decompose things so that little testable pieces can be done. And there is also the problem that what is in decompyle3 is incomplete as well.
Other than control flow, another change that will probably happen in the next release is to redo the grammar for lambda expressions. Right now, we treat them as Python statements, you know, things with compound statements in them. But lambda aren't that. And so there is hackery to paper over difference making a statement out of an expression the wrong thing to do. For example, a return of an "and" expression can be expressed as nested "if" statements with return inside them, but the "if" variant of the bytecode is not valid in a lambda.
In the decompyle3 code, I've gone down the road making the grammar goal symbol be an expression. This also offers the opportunity to split the grammar making parsing inside lambda not only more reliable because the wrong choices don't exist, but also simpler and faster because all those rules just need don't need to exist in parsing.
I cringe in thinking about how the code has lived for so long without noticing such a simple stupidity, and lapse of sufficient thought.
Some stats from testing. The below give numbers of decompiled tests from Python's test suite which succesfully ran
```
Version test-suites passing
------- -------------------
2.4.6 243
2.5.6 265
2.6.9 305
3.3.7 300
3.4.10 304
3.5.9 260
3.6.10 236
3.7.6 306
3.8.1 114
```
Decompiled bytecode files distributed with Python (syntax check only):
```
2.7.17 647 files: 0 failed
3.2.6 900 files: 0 failed
3.3.7 1256 files: 0 failed
3.4.10 800 files: 0 failed
3.5.9 900 files: 0 failed
3.6.10 1300 files: 28 failed
```
3.6.3: 2020-1-26 Martin and Susanne
===================================

View File

@@ -54,7 +54,7 @@ only; another patched that and handled only 3.3. You get the
idea. This code pulls all of these forks together and *moves
forward*. There is some serious refactoring and cleanup in this code
base over those old forks. Even more experimental refactoring is going
on in decompile3_.
on in decompyle3_.
This demonstrably does the best in decompiling Python across all
Python versions. And even when there is another project that only
@@ -139,9 +139,16 @@ Python syntax changes, you should use this option if the bytecode is
the right bytecode for the Python interpreter that will be checking
the syntax.
You can also cross compare the results with another python decompiler
like pycdc_ . Since they work differently, bugs here often aren't in
that, and vice versa.
You can also cross compare the results with either another version of
`uncompyle6` since there are are sometimes regressions in decompiling
specific bytecode as the overall quality improves.
For Python 3.7 and above, the code in decompyle3_ is generally
better.
Or try specific another python decompiler like uncompyle2_, unpyc37_,
or pycdc_. Since the later two work differently, bugs here often
aren't in that, and vice versa.
There is an interesting class of these programs that is readily
available give stronger verification: those programs that when run
@@ -240,7 +247,9 @@ See Also
.. _debuggers: https://pypi.python.org/pypi/trepan3k
.. _remake: https://bashdb.sf.net/remake
.. _pycdc: https://github.com/zrax/pycdc
.. _decompile3: https://github.com/rocky/python-decompile3
.. _decompyle3: https://github.com/rocky/python-decompile3
.. _uncompyle2: https://github.com/wibiti/uncompyle2
.. _unpyc37: https://github.com/andrew-tavera/unpyc37
.. _this: https://github.com/rocky/python-uncompyle6/wiki/Deparsing-technology-and-its-use-in-exact-location-reporting
.. |buildstatus| image:: https://travis-ci.org/rocky/python-uncompyle6.svg :target: https://travis-ci.org/rocky/python-uncompyle6
.. |packagestatus| image:: https://repology.org/badge/vertical-allrepos/python:uncompyle6.svg :target: https://repology.org/project/python:uncompyle6/versions

View File

@@ -21,6 +21,17 @@
# less elegant than having it here with reduced code, albeit there
# still is some room for improvement.
# Python-version | package | last-version |
# -----------------------------------------
# 2.5 | pip | 1.1 |
# 2.6 | pip | 1.5.6 |
# 2.7 | pip | 19.2.3 |
# 2.7 | pip | 1.2.1 |
# 3.1 | pip | 1.5.6 |
# 3.2 | pip | 7.1.2 |
# 3.3 | pip | 10.0.1 |
# 3.4 | pip | 19.1.1 |
# Things that change more often go here.
copyright = """
Copyright (C) 2015-2020 Rocky Bernstein <rb@dustyfeet.com>.
@@ -58,7 +69,7 @@ entry_points = {
]}
ftp_url = None
install_requires = ["spark-parser >= 1.8.9, < 1.9.0",
"xdis >= 4.2.2, < 4.3.0"]
"xdis >= 4.6.0, < 4.7.0"]
license = "GPL3"
mailing_list = "python-debugger@googlegroups.com"

View File

@@ -55,11 +55,11 @@
# Make packages and tag
$ . ./admin-tools/make-dist-older.sh
$ pyenv local 3.8.1
$ pyenv local 3.8.3
$ twine check dist/uncompyle6-$VERSION*
$ git tag release-python-2.4-$VERSION
$ . ./admin-tools/make-dist-newer.sh
$ twine check dist/uncompyle6-$VERSION*
$ . ./admin-tools/make-dist-newer.sh
# Upload single package and look at Rst Formating

View File

@@ -5,4 +5,4 @@ if [[ $0 == ${BASH_SOURCE[0]} ]] ; then
echo "This script should be *sourced* rather than run directly through bash"
exit 1
fi
export PYVERSIONS='3.5.9 3.6.10 2.6.9 3.3.7 2.7.17 3.2.6 3.1.5 3.4.10 3.7.6 3.8.1'
export PYVERSIONS='3.5.9 3.6.10 2.6.9 3.3.7 2.7.18 3.2.6 3.1.5 3.4.10 3.7.7 3.8.3'

View File

@@ -1,5 +1,5 @@
#!/bin/bash
PYTHON_VERSION=3.7.6
PYTHON_VERSION=3.7.7
# FIXME put some of the below in a common routine
function finish {

View File

@@ -53,6 +53,7 @@ install:
# compiled extensions and are not provided as pre-built wheel packages,
# pip will build them from source using the MSVC compiler matching the
# target Python version and architecture
- "%CMD_IN_ENV% pip install git+git://github.com/rocky/python-uncompyle6.git#egg=uncompyle6-3.6.6"
- "%CMD_IN_ENV% pip install -r requirements.txt"
build_script:

View File

@@ -1,14 +1,13 @@
from uncompyle6 import PYTHON_VERSION
from uncompyle6.scanners.tok import Token
def test_token():
# Test token formatting of: LOAD_CONST None
t = Token("LOAD_CONST", offset=0, attr=None, pattr=None, has_arg=True)
expect = " 0 LOAD_CONST None"
expect = "0 LOAD_CONST None"
# print(t.format())
assert t
assert t.format() == expect
assert t.format().strip() == expect.strip()
# Make sure equality testing of tokens ignores offset
t2 = Token("LOAD_CONST", offset=2, attr=None, pattr=None, has_arg=True)
@@ -17,8 +16,8 @@ def test_token():
# Make sure formatting of: LOAD_CONST False. We assume False is the 0th index
# of co_consts.
t = Token("LOAD_CONST", offset=1, attr=False, pattr=False, has_arg=True)
expect = " 1 LOAD_CONST False"
assert t.format() == expect
expect = "1 LOAD_CONST False"
assert t.format().strip() == expect.strip()
if __name__ == "__main__":

View File

@@ -1,12 +1,12 @@
# Python 2.7
# Embedded file name: simple_source/branching/05_if.py
6 0 LOAD_NAME 0 'True'
3 POP_JUMP_IF_FALSE 15 'to 15'
L. 6 0 LOAD_NAME 0 'True'
3 POP_JUMP_IF_FALSE 15 'to 15'
7 6 LOAD_NAME 1 'False'
9 STORE_NAME 2 'b'
12 JUMP_FORWARD 0 'to 15'
15_0 COME_FROM 12 '12'
15 LOAD_CONST None
18 RETURN_VALUE
L. 7 6 LOAD_NAME 1 'False'
9 STORE_NAME 2 'b'
12 JUMP_FORWARD 0 'to 15'
15_0 COME_FROM 12 '12'
15 LOAD_CONST None
18 RETURN_VALUE

View File

@@ -1,15 +1,15 @@
# Python 2.7
# Embedded file name: simple_source/branching/05_ifelse.py
3 0 LOAD_NAME 0 'True'
3 POP_JUMP_IF_FALSE 15 'to 15'
L. 3 0 LOAD_NAME 0 'True'
3 POP_JUMP_IF_FALSE 15 'to 15'
4 6 LOAD_CONST 1
9 STORE_NAME 1 'b'
12 JUMP_FORWARD 6 'to 21'
L. 4 6 LOAD_CONST 1
9 STORE_NAME 1 'b'
12 JUMP_FORWARD 6 'to 21'
6 15 LOAD_CONST 2
18 STORE_NAME 2 'd'
21_0 COME_FROM 12 '12'
21 LOAD_CONST None
24 RETURN_VALUE
L. 6 15 LOAD_CONST 2
18 STORE_NAME 2 'd'
21_0 COME_FROM 12 '12'
21 LOAD_CONST None
24 RETURN_VALUE

View File

@@ -12,8 +12,7 @@ import functools
from uncompyle6 import PYTHON_VERSION, PYTHON3, IS_PYPY, code_deparse
# TODO : I think we can get xdis to support the dis api (python 3 version) by doing something like this there
from xdis.bytecode import Bytecode
from xdis.main import get_opcode
from xdis import Bytecode, get_opcode
opc = get_opcode(PYTHON_VERSION, IS_PYPY)
Bytecode = functools.partial(Bytecode, opc=opc)

View File

@@ -15,29 +15,40 @@ if not ((2, 4) <= SYS_VERSION <= (2, 7)):
print(mess)
raise Exception(mess)
from __pkginfo__ import \
author, author_email, install_requires, \
license, long_description, classifiers, \
entry_points, modname, py_modules, \
short_desc, VERSION, web, \
zip_safe
from __pkginfo__ import (
author,
author_email,
install_requires,
license,
long_description,
classifiers,
entry_points,
modname,
py_modules,
short_desc,
VERSION,
web,
zip_safe,
)
from setuptools import setup, find_packages
setup(
author = author,
author_email = author_email,
classifiers = classifiers,
description = short_desc,
entry_points = entry_points,
install_requires = install_requires,
license = license,
long_description = long_description,
long_description_content_type = "text/x-rst",
name = modname,
packages = find_packages(),
py_modules = py_modules,
test_suite = 'nose.collector',
url = web,
tests_require = ['nose>=1.0'],
version = VERSION,
zip_safe = zip_safe)
author=author,
author_email=author_email,
classifiers=classifiers,
description=short_desc,
entry_points=entry_points,
install_requires=install_requires,
license=license,
long_description=long_description,
long_description_content_type="text/x-rst",
name=modname,
packages=find_packages(),
py_modules=py_modules,
test_suite="nose.collector",
url=web,
tests_require=["nose>=1.0"],
version=VERSION,
zip_safe=zip_safe,
)

6
test/.gitignore vendored
View File

@@ -1,2 +1,8 @@
/.coverage
/.python-version
/nohup.out
/pycdc
/test_pycdc_tests.sh
/test_uncompyle2.py
/test_unpy33.py
/test_unpy37.py

View File

@@ -78,7 +78,7 @@ check-3.7: check-bytecode
# $(PYTHON) test_pythonlib.py --bytecode-3.8 --syntax-verify $(COMPILE)
# FIXME
#: this is called when running under pypy3.5-5.8.0 or pypy2-5.6.0
#: this is called when running under pypy3.5-5.8.0, pypy2-5.6.0, or pypy3.6-7.3.0
5.8 5.6:
#: Check deparsing only, but from a different Python version
@@ -95,12 +95,19 @@ check-bytecode-2:
--bytecode-2.5 --bytecode-2.6 --bytecode-2.7 --bytecode-pypy2.7
#: Check deparsing bytecode 3.x only
# check-bytecode-3:
# $(PYTHON) test_pythonlib.py \
# --bytecode-3.0 \
# --bytecode-3.1 --bytecode-3.2 --bytecode-3.3 \
# --bytecode-3.4 --bytecode-3.5 --bytecode-3.6 \
# --bytecode-3.7 \
# --bytecode-pypy3.2 --bytecode-pypy3.6 --bytecode-3.8
# FIXME: Until we shaked out problems with xdis...
check-bytecode-3:
$(PYTHON) test_pythonlib.py --bytecode-3.0 \
--bytecode-3.1 --bytecode-3.2 --bytecode-3.3 \
$(PYTHON) test_pythonlib.py \
--bytecode-3.4 --bytecode-3.5 --bytecode-3.6 \
--bytecode-3.7 \
--bytecode-pypy3.2 --bytecode-pypy3.6
--bytecode-3.7 --bytecode-3.8
#: Check deparsing on selected bytecode 3.x
check-bytecode-3-short:
@@ -344,8 +351,8 @@ check-bytecode-pypy3.6: 7.1
$(PYTHON) test_pythonlib.py --bytecode-pypy3.6 --verify
#: PyPy 5.0.x with Python 3.6.9
check-bytecode-pypy3.6: 7.2
7.2:
check-bytecode-pypy3.6: 7.2 7.3
7.3 7.2:
$(PYTHON) test_pythonlib.py --bytecode-pypy3.6-run --verify-run
$(PYTHON) test_pythonlib.py --bytecode-pypy3.6 --verify

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -8,7 +8,7 @@ See http://www.goebel-consult.de/decompyle/ for download and
for further information
"""
# This is a seperate test pattern, since 'continue' within 'try'
# This is a separate test pattern, since 'continue' within 'try'
# was not allowed till Python 2.1
for term in args:

View File

@@ -3,32 +3,54 @@
function displaytime {
printf "ran in "
local T=$1
local D=$((T/60/60/24))
local H=$((T/60/60%24))
local M=$((T/60%60))
local S=$((T%60))
(( $D > 0 )) && printf '%d days ' $D
(( $H > 0 )) && printf '%d hours ' $H
(( $M > 0 )) && printf '%d minutes ' $M
(( $D > 0 || $H > 0 || $M > 0 )) && printf 'and '
((D=T/60/60/24))
((H=T/60/60%24))
((M=T/60%60))
((S=T%60))
(( D > 0 )) && printf '%d days ' $D
(( H > 0 )) && printf '%d hours ' $H
(( M > 0 )) && printf '%d minutes ' $M
(( D > 0 || H > 0 || M > 0 )) && printf 'and '
printf '%d seconds\n' $S
}
. ../admin-tools/pyenv-newer-versions
bs=${BASH_SOURCE[0]}
if [[ $0 != $bs ]] ; then
echo "This script should not be *sourced* but run through bash"
exit 1
fi
mydir=$(dirname $bs)
cd $mydir
branch=$(cat ../.git/HEAD | cut -d'/' -f 3)
if [[ $branch == 'python-2.4' ]]; then
. ../admin-tools/pyenv-older-versions
elif [[ $branch == 'master' ]]; then
. ../admin-tools/pyenv-newer-versions
else
echo &1>2 "Error git branch should either be 'master' or 'python-2.4'; got: '$branch'"
exit 1
fi
MAIN="test_pyenvlib.py"
USER=${USER:-rocky}
EMAIL=${EMAIL:-rb@dustyfeet.com}
WHAT="uncompyle6 2.4 ${MAIN}"
MAX_TESTS=${MAX_TESTS:-800}
export BATCH=1
typeset -i RUN_STARTTIME=$(date +%s)
# PYVERSIONS="3.5.6"
actual_versions=""
MAILBODY=/tmp/${MAIN}-mailbody-$$.txt
# for VERSION in 2.4.6 2.5.9 ; do
for VERSION in $PYVERSIONS ; do
typeset -i rc=0
LOGFILE=/tmp/pyenvlib-$VERSION-$$.log
LOGFILE=/tmp/${MAIN}-$VERSION-$$.log
case "$VERSION" in
3.7.6 | 3.8.1 | 3.1.5 | 3.0.1 )
3.7.7 | 3.8.2 | 3.1.5 | 3.0.1 )
continue
;;
3.5.9 )
@@ -44,7 +66,15 @@ for VERSION in $PYVERSIONS ; do
MAX_TESTS=800
;;
3.6.10 )
MAX_TESTS=1300 # about 2139 exist
# MAX_TESTS=1300 # about 2139 exist
# fails on _pyio.cpython-36.opt-1.pyc
MAX_TESTS=34
;;
2.4.6 )
MAX_TESTS=600
;;
2.5.6 )
MAX_TESTS=600
;;
2.6.9 )
MAX_TESTS=1300
@@ -58,11 +88,13 @@ for VERSION in $PYVERSIONS ; do
if ! pyenv local $VERSION ; then
rc=1
mailbody_line="pyenv local $VERSION not installed"
echo $mailbody_line >> $MAILBODY
else
echo Python Version $(pyenv local) > $LOGFILE
echo "" >> $LOGFILE
typeset -i ALL_FILES_STARTTIME=$(date +%s)
cmd="python ./test_pyenvlib.py --max ${MAX_TESTS} --syntax-verify --$VERSION"
cmd="python ./${MAIN} --max ${MAX_TESTS} --syntax-verify --$VERSION"
echo "$cmd" >>$LOGFILE 2>&1
$cmd >>$LOGFILE 2>&1
rc=$?
@@ -72,20 +104,25 @@ for VERSION in $PYVERSIONS ; do
typeset -i ALL_FILES_ENDTIME=$(date +%s)
(( time_diff = ALL_FILES_ENDTIME - ALL_FILES_STARTTIME))
displaytime $time_diff >> $LOGFILE
time_str=$(displaytime $time_diff)
echo ${time_str}. >> $LOGFILE
fi
SUBJECT_PREFIX="pyenv weak verify (max $MAX_TESTS) for"
SUBJECT_PREFIX="$WHAT (max $MAX_TESTS) for"
if ((rc == 0)); then
mailbody_line="Python $VERSION ok; ${time_str}."
tail -v $LOGFILE | mail -s "$SUBJECT_PREFIX $VERSION ok" ${USER}@localhost
else
mailbody_line="Python $VERSION failed; ${time_str}."
tail -v $LOGFILE | mail -s "$SUBJECT_PREFIX $VERSION not ok" ${USER}@localhost
tail -v $LOGFILE | mail -s "$SUBJECT_PREFIX $VERSION not ok" ${EMAIL}
tail -v $LOGFILE | mail -s "$HOST $SUBJECT_PREFIX $VERSION not ok" ${EMAIL}
fi
echo $mailbody_line >> $MAILBODY
rm .python-version
done
typeset -i RUN_ENDTIME=$(date +%s)
(( time_diff = RUN_ENDTIME - RUN_STARTTIME))
elapsed_time=$(displaytime $time_diff)
echo "Run complete $elapsed_time for versions $actual_versions" | mail -s "pyenv weak verify in $elapsed_time" ${EMAIL}
echo "${WHAT} complete; ${elapsed_time}." >> $MAILBODY
cat $MAILBODY | mail -s "$HOST $WHAT ${elapsed_time}." ${EMAIL}

View File

@@ -2,7 +2,7 @@
from uncompyle6 import uncompyle
from uncompyle6.main import decompile
from xdis.magics import sysinfo2float
from xdis import sysinfo2float
import sys, inspect
def uncompyle_test():

View File

@@ -22,7 +22,7 @@ assert i[0]('a') == True
assert i[0]('A') == False
# Issue #170. Bug is needing an "conditional_not_lambda" grammar rule
# in addition the the "if_expr_lambda" rule
# in addition the the "if_exp_lambda" rule
j = lambda a: False if not a else True
assert j(True) == True
assert j(False) == False

View File

@@ -1,8 +1,8 @@
# Tests:
# ret_expr_or_cond ::= ret_expr
# ret_cond ::= expr POP_JUMP_IF_FALSE expr RETURN_END_IF ret_expr_or_cond
# ret_expr_or_cond ::= ret_cond
# if_exp_ret ::= expr POP_JUMP_IF_FALSE expr RETURN_END_IF ret_expr_or_cond
# ret_expr_or_cond ::= if_exp_ret
# ret_or ::= expr JUMP_IF_TRUE_OR_POP ret_expr_or_cond COME_FROM
# See https://github.com/rocky/python-uncompyle6/issues/5

View File

@@ -0,0 +1,4 @@
# From 2.7.17 fractions
"""Rational, infinite-precision, real numbers."""
from __future__ import division

View File

@@ -8,7 +8,7 @@ list(x for x in range(10) if x % 2 if x % 3)
# expresion which evaluates True unconditionally,
# but leave dead code or junk around that we have to match on.
# Tests "if_expr_true" rule
# Tests "if_exp_true" rule
5 if 1 else 2
0 or max(5, 3) if 0 else 3

View File

@@ -1,6 +1,6 @@
# Bug found in 2.7 test_itertools.py
# Bug was erroneously using reduction to if_expr_true
# A proper fix would be to use if_expr_true only when we
# Bug was erroneously using reduction to if_exp_true
# A proper fix would be to use if_exp_true only when we
# can determine there is or was dead code.
from itertools import izip_longest
for args in [['abc', range(6)]]:

View File

@@ -0,0 +1,32 @@
# Adapted from 3.7.6 test_contains
# The bug was in reconstructing something equivalent to
# "while False: yelid None" which is *needed* in __iter__().
# Sheeh!
# RUNNABLE!
def test_block_fallback():
# blocking fallback with __contains__ = None
class ByContains(object):
def __contains__(self, other):
return False
c = ByContains()
class BlockContains(ByContains):
"""Is not a container
This class is a perfectly good iterable (as tested by
list(bc)), as well as inheriting from a perfectly good
container, but __contains__ = None prevents the usual
fallback to iteration in the container protocol. That
is, normally, 0 in bc would fall back to the equivalent
of any(x==0 for x in bc), but here it's blocked from
doing so.
"""
def __iter__(self):
while False:
yield None
__contains__ = None
bc = BlockContains()
assert not (0 in c)
assert not (0 in list(bc))
test_block_fallback()

View File

@@ -66,6 +66,14 @@ def div(a: dict(type=float, help='the dividend'),
"""Divide a by b"""
return a / b
# From 3.7.6 functools.py
# Bug is in picking up the annotation.
def f(a:"This is a new annotation"):
"""This is a test"""
assert f.__annotations__['a'] == "This is a new annotation"
f(5)
class TestSignatureObject1():
def test_signature_on_wkwonly(self):
def test(*, a:float, b:str, c:str = 'test', **kwargs: int) -> int:

View File

@@ -1,6 +1,8 @@
# Python 3.3+
#
# From Python 3.3.6 hmac.py
# Problem was getting wrong placement of positional args.
# In 3.6+ paramter handling changes
# In 3.6+ parameter handling changes
# RUNNABLE!

View File

@@ -1,3 +1,12 @@
async def a(b, c):
async for b in c:
pass
# From 3.7 test_generators.py
# Bug was getting indentation correct for multiple async's
async def foo(X):
async for i in X:
pass
async for i in X:
pass
raise Done

View File

@@ -1,6 +1,9 @@
# 3.6+ type annotations on variables
from typing import List
# This test program is part of the uncompyle6 test suite
# tests STORE_ANNOTATION and SETUP_ANOTATIONS
# RUNNABLE!
y = 2
x: bool

View File

@@ -6,3 +6,11 @@ def make_arange(n):
async def run(m):
return [i async for i in m]
# From 3.7.6 test_coroutines.py
async def run_list(pair, f):
return [i for pair in p async for i in f]
# FIXME: add this. It works in decompyle3
# async def run_gen():
# return (i async for i in f if 0 < i < 4)

View File

@@ -1,12 +0,0 @@
# from 3.7 test_contextlib_async.py
# Bugs were not adding "async" when a function is a decorator,
# and a misaligment when using "async with as".
@_async_test
async def test_enter(self):
self.assertIs(await manager.__aenter__(), manager)
async with manager as context:
async with woohoo() as x:
x = 1
y = 2
assert manager is context

View File

@@ -0,0 +1,87 @@
# From test_grammar.py
# RUNNABLE!
def check_syntax_error(statement):
try:
compile(statement, '<test string>', 'exec')
except SyntaxError:
return
assert False
def test_yield():
# Requires parentheses as call argument
def g():
f((yield 1), 1)
def g():
f((yield from ()))
def g():
f((yield from ()), 1)
def g():
f((yield 1))
# Allowed as standalone statement
def g():
yield 1
def g():
yield from ()
# Allowed as RHS of assignment
def g():
x = yield 1
def g():
x = yield from ()
# Ordinary yield accepts implicit tuples
def g():
yield 1, 1
def g():
x = yield 1, 1
# 'yield from' does not
check_syntax_error("def g(): yield from (), 1")
check_syntax_error("def g(): x = yield from (), 1")
# Requires parentheses as subexpression
def g():
1, (yield 1)
def g():
1, (yield from ())
check_syntax_error("def g(): 1, yield 1")
check_syntax_error("def g(): 1, yield from ()")
# Requires parentheses as call argument
def g():
f((yield 1))
def g():
f((yield 1), 1)
def g():
f((yield from ()))
def g():
f((yield from ()), 1)
check_syntax_error("def g(): f(yield 1)")
check_syntax_error("def g(): f(yield 1, 1)")
check_syntax_error("def g(): f(yield from ())")
check_syntax_error("def g(): f(yield from (), 1)")
# Not allowed at top level
check_syntax_error("yield")
check_syntax_error("yield from")
# Not allowed at class scope
check_syntax_error("class foo:yield 1")
check_syntax_error("class foo:yield from ()")
# Check annotation refleak on SyntaxError
check_syntax_error("def g(a:(yield)): pass")
test_yield()
# From test_types.py
# Bug was needing parens around (yield 2)
def gen_func():
yield 1
return (yield 2)
gen = gen_func()

View File

@@ -0,0 +1,70 @@
# from 3.7 test_contextlib_async.py
# Bugs were not adding "async" when a function is a decorator,
# and a misaligment when using "async with ... as".
"""This program is self-checking!"""
import asyncio
from contextlib import asynccontextmanager, AbstractAsyncContextManager
import functools
def _async_test(func):
"""Decorator to turn an async function into a test case."""
@functools.wraps(func)
def wrapper(*args, **kwargs):
coro = func(*args, **kwargs)
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
try:
return loop.run_until_complete(coro)
finally:
loop.close()
asyncio.set_event_loop(None)
return wrapper
state = []
@asynccontextmanager
async def woohoo():
state.append(1)
yield 42
state.append(999)
@_async_test
async def test_enter():
class DefaultEnter(AbstractAsyncContextManager):
async def __aexit__(*args):
return
# await super().__aexit__(*args)
manager = DefaultEnter()
got_manager = await manager.__aenter__()
# print(got_manager, manager)
assert got_manager is manager
async with manager as context:
async with woohoo() as x:
x = 1
y = 2
assert manager is context
# From 3.7.6 test_coroutines.py
# Bug was different form of code for "async with" below
class CoroutineTest:
def test_with_8(self):
CNT = 0
async def foo():
nonlocal CNT
async with CM():
CNT += 1
return
test_enter()

View File

@@ -12,3 +12,9 @@ class abstractclassmethod(classmethod):
def __init__(self, callable):
callable.__isabstractmethod__ = True
super().__init__(callable)
# From 2.7.17 test_abc.py
# Bug was handling OldstyleClass correctly without
# a "return locals() but with a "pass"
class OldstyleClass:
pass

View File

@@ -17,9 +17,9 @@ def ybug(g):
# From 3.5.1 _wakrefset.py
#
# 3.5:
# withstmt ::= expr SETUP_WITH POP_TOP suite_stmts_opt
# POP_BLOCK LOAD_CONST COME_FROM
# WITH_CLEANUP_START WITH_CLEANUP_FINISH END_FINALLY
# with ::= expr SETUP_WITH POP_TOP suite_stmts_opt
# POP_BLOCK LOAD_CONST COME_FROM
# WITH_CLEANUP_START WITH_CLEANUP_FINISH END_FINALLY
def __iter__(self, IterationGuard):

View File

@@ -7,3 +7,40 @@ def readline (self):
continue
return
# From 2.4.6 sre.py
# Bug has to do with "break" not being recognized
# and is a JUMP_FORWARD.
def _parse(a, b, source, state):
while 1:
if b:
while 1:
break
else:
raise
def _parse2(source, state):
while 1:
if a:
if b:
while 1:
this = 1
break
continue
while 1:
if b:
break
x = 3
# Bug was in 2.3 decompilation
def _parse3(source, state):
while 1:
if a:
if b:
x = 1
while 1:
if a:
break
raise

View File

@@ -0,0 +1,76 @@
# From 3.6.10 test_binascii.py
# Bug was getting "while c and noise" parsed correclty
# and not put into the "ifelsesmt"
# RUNNABLE!
def addnoise(c, noise):
while c and noise:
if c < 3:
c = 2
else:
c = 3
noise = False
return c
assert addnoise(0, True) == 0
assert addnoise(1, False) == 1
assert addnoise(2, True) == 2
assert addnoise(3, True) == 3
assert addnoise(4, True) == 3
assert addnoise(5, False) == 5
# From 3.6.10 test_dbm_dumb.py
# Bug was getting attaching "else" to the right "if" in the
# presense of a loop.
def test_random(a, r):
x = 0
for dummy in r:
if dummy:
if a:
x += 2
else:
x += 1
return x
assert test_random(True, [1]) == 2
assert test_random(True, [1, 1]) == 4
assert test_random(False, [1]) == 0
assert test_random(False, [1, 1]) == 0
# From 2.7.17 test_frozen.py
# Bug was getting making sure we have "try" not
# "try"/"else"
def test_frozen(a, b):
try:
x = 1 / a
except:
x = 2
try:
x += 3 / b
except:
x += 4
return x
assert test_frozen(1, 1) == 4.0
assert test_frozen(0, 1) == 5.0
assert test_frozen(0.5, 0) == 6.0
assert test_frozen(0, 0.5) == 8.0
# From 3.6.10 test_binop.py
# Bug was getting "other += 3" outside of "if"/"else.
def __floordiv__(a, b):
other = 0
if a:
other = 1
else:
if not b:
return 2
other += 3
return other
assert __floordiv__(True, True) == 4
assert __floordiv__(True, False) == 4
assert __floordiv__(False, True) == 3
assert __floordiv__(False, False) == 2

View File

@@ -1,11 +1,13 @@
# 2.6.9 symbols.py
# Bug in 2.6 is having multple COME_FROMs due to the
# "and" in the "if" clause
# RUNNABLE
if __name__:
if __file__ and __name__:
pass
elif __name__:
pass
elif not __name__:
assert False
# 2.6.9 transformer.py
# Bug in 2.6 is multple COME_FROMs as a result
@@ -21,3 +23,20 @@ elif __file__:
assert __name__ or __file__
else:
pass
# From 3.3.7 test_binop.py
# Bug was in ifelsestmt(c) ensuring b+=5 is not in "else"
# Also note: ifelsetmtc should not have been used since this
# this is not in a loop!
def __floordiv__(a, b):
if a:
b += 1
elif not b:
return a
b += 5
return b
assert __floordiv__(1, 1) == 7
assert __floordiv__(1, 0) == 6
assert __floordiv__(0, 3) == 8
assert __floordiv__(0, 0) == 0

View File

@@ -1 +1,3 @@
/.python-version
/runun33.sh
/runun7.sh

View File

@@ -0,0 +1,55 @@
SKIP_TESTS=(
[test_aepack.py]=1 # it fails on its own
[test_al.py]=1 # it fails on its own
[test_applesingle.py]=1 # it fails on its own
[test_bsddb185.py]=1 # it fails on its own
[test_bsddb3.py]=1 # it fails on its own
[test_bsddb.py]=1 # it fails on its own
[test_cd.py]=1 # it fails on its own
[test_cl.py]=1 # it fails on its own
[test_codecmaps_cn.py]=1 # it fails on its own
[test_codecmaps_hk.py]=1 # it fails on its own
[test_codecmaps_jp.py]=1 # it fails on its own
[test_codecmaps_kr.py]=1 # it fails on its own
[test_codecmaps_tw.py]=1 # it fails on its own
[test_curses.py]=1 # it fails on its own
[test_dbm.py]=1 # it fails on its own
[test_dl.py]=1 # it fails on its own
[test_gdbm.py]=1 # it fails on its own
[test_gl.py]=1 # it fails on its own
[test_imageop.py]=1 # it fails on its own
[test_imgfile.py]=1 # it fails on its own
[test_linuxaudiodev.py]=1 # it fails on its own
[test_macfs.py]=1 # it fails on its own
[test_macostools.py]=1 # it fails on its own
[test_nis.py]=1 # it fails on its own
[test_normalization.py]=1 # it fails on its own
[test_ossaudiodev.py]=1 # it fails on its own
[test_pep277.py]=1 # it fails on its own
[test_plistlib.py]=1 # it fails on its own
[test_rgbimg.py]=1 # it fails on its own
[test_scriptpackages.py]=1 # it fails on its own
[test_socket_ssl.py]=1 # it fails on its own
[test_sunaudiodev.py]=1 # it fails on its own
[test_support.py]=1 # it fails on its own
[test_tcl.py]=1 # it fails on its own
[test_urllib2net.py]=1 # it fails on its own
[test_urllibnet.py]=1 # it fails on its own
[test_winreg.py]=1 # it fails on its own
[test_winsound.py]=1 # it fails on its own
[test_zlib.py]=1 # it fails on its own
[test_decimal.py]=1 #
[test_dis.py]=1 # We change line numbers - duh!
[test_generators.py]=1 # Investigate
[test_grammar.py]=1 # Too many stmts. Handle large stmts
[test_grp.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_socketserver.py]=1 # -- test takes too long to run: 40 seconds
[test_threading.py]=1 # test takes too long to run: 11 seconds
[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
)
# About 243 files, 0 in 19 minutes

View File

@@ -1,4 +1,44 @@
SKIP_TESTS=(
[test_aepack.py]=1 # it fails on its own
[test_al.py]=1 # it fails on its own
[test_applesingle.py]=1 # it fails on its own
[test_bsddb185.py]=1 # it fails on its own
[test_bsddb3.py]=1 # it fails on its own
[test_bsddb.py]=1 # it fails on its own
[test_cd.py]=1 # it fails on its own
[test_cl.py]=1 # it fails on its own
[test_codecmaps_cn.py]=1 # it fails on its own
[test_codecmaps_hk.py]=1 # it fails on its own
[test_codecmaps_jp.py]=1 # it fails on its own
[test_codecmaps_kr.py]=1 # it fails on its own
[test_codecmaps_tw.py]=1 # it fails on its own
[test_curses.py]=1 # it fails on its own
[test_dbm.py]=1 # it fails on its own
[test_dl.py]=1 # it fails on its own
[test_gdbm.py]=1 # it fails on its own
[test_gl.py]=1 # it fails on its own
[test_imageop.py]=1 # it fails on its own
[test_imgfile.py]=1 # it fails on its own
[test_linuxaudiodev.py]=1 # it fails on its own
[test_macfs.py]=1 # it fails on its own
[test_macostools.py]=1 # it fails on its own
[test_nis.py]=1 # it fails on its own
[test_normalization.py]=1 # it fails on its own
[test_ossaudiodev.py]=1 # it fails on its own
[test_pep277.py]=1 # it fails on its own
[test_plistlib.py]=1 # it fails on its own
[test_rgbimg.py]=1 # it fails on its own
[test_scriptpackages.py]=1 # it fails on its own
[test_sunaudiodev.py]=1 # it fails on its own
[test_support.py]=1 # it fails on its own
[test_tcl.py]=1 # it fails on its own
[test_urllib2net.py]=1 # it fails on its own
[test_urllibnet.py]=1 # it fails on its own
[test_winreg.py]=1 # it fails on its own
[test_winsound.py]=1 # it fails on its own
[test_zlib.py]=1 # it fails on its own
[test_coercion.py]=1
[test_decimal.py]=1
[test_dis.py]=1 # We change line numbers - duh!
@@ -28,14 +68,19 @@ SKIP_TESTS=(
[test_struct.py]=1 # "if and" confused for if .. assert and
[test_sunaudiodev.py]=1 # it fails on its own
[test_support.py]=1 # it fails on its own
[test_tcl.py=1] # it fails on its own
[test_tcl.py]=1 # it fails on its own
[test_threading.py]=1 # test takes too long to run: 11 seconds
[test_thread.py]=1 # test takes too long to run: 36 seconds
[test_trace.py]=1 # Line numbers are expected to be different
[test_urllib2net.py]=1 # is interactive?
[test_urllibnet.py]=1 # it fails on its own
[test_winreg.py]=1 # it fails on its own
[test_winsound.py[=1 # it fails on its own
[test_winsound.py]=1 # it fails on its own
[test_zipfile64.py]=1 # Runs ok but takes 204 seconds
[test_zlib]=1 # fails on its own
)
# About 265 tests in 14 minutes
if (( BATCH )) ; then
SKIP_TESTS[test_doctest.py]=1 # Fails on ppc64le
fi

View File

@@ -1,4 +1,12 @@
SKIP_TESTS=(
# ifelsestmt is borked in:
# if filename == 'srcfile':
# return srcfile
# if filename == 'destfile':
# return destfile
# assert 0 # shouldn't reach here.
[test_shutil.py]=1
[test___all__.py]=1 # it fails on its own
[test___all__.py]=1 # it fails on its own
@@ -59,6 +67,7 @@ SKIP_TESTS=(
[test_scriptpackages.py]=1 # it fails on its own
[test_select.py]=1 # test takes too long to run: 11 seconds
[test_socket.py]=1 # test takes too long to run: 12 seconds
[test_startfile.py]=1 # it fails on its own
[test_structmembers.py]=1 # it fails on its own
@@ -85,7 +94,7 @@ SKIP_TESTS=(
)
# About 305 unit-test files in about 12 minutes
if (( batch )) ; then
if (( BATCH )) ; then
# Fails in crontab environment?
# Figure out what's up here
SKIP_TESTS[test_aifc.py]=1

View File

@@ -1,4 +1,6 @@
SKIP_TESTS=(
[test_cgi.py]=1 # FIXME: Works on c90ff51
[test_bsddb3.py]=1 # test takes too long to run: 110 seconds
[test_compile.py]=1 # Code introspects on co_consts in a non-decompilable way
[test_curses.py]=1 # Possibly fails on its own but not detected
@@ -25,6 +27,7 @@ SKIP_TESTS=(
[test_ssl.py]=1 #
[test_subprocess.py]=1 # Runs ok but takes 22 seconds
[test_sys_settrace.py]=1 # Line numbers are expected to be different
[test_tokenize.py]=1 # test takes too long to run: 19 seconds
[test_traceback.py]=1 # Line numbers change - duh.
[test_unicode.py]=1 # Too long to run 11 seconds
@@ -34,7 +37,7 @@ SKIP_TESTS=(
)
# 334 unit-test files in about 15 minutes
if (( batch )) ; then
if (( BATCH )) ; then
# Fails in crontab environment?
# Figure out what's up here
SKIP_TESTS[test_array.py]=1
@@ -43,6 +46,7 @@ if (( batch )) ; then
SKIP_TESTS[test_doctest2.py]=1 # a POWER thing?
SKIP_TESTS[test_httplib.py]=1 # Ok, but POWER has problems with this
SKIP_TESTS[test_pdb.py]=1 # Ok, but POWER has problems with this
SKIP_TESTS[test_tarfile.py]=1 # test can take over 15 seconds to run on an overloaded POWER7 system
# SyntaxError: Non-ASCII character '\xdd' in file test_base64.py on line 153, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
SKIP_TESTS[test_base64.py]=1

View File

@@ -1,14 +1,5 @@
SKIP_TESTS=(
[test_decorators.py]=1 # FIXME: Works on c90ff51
[test_optparse.py]=1 # FIXME: Works on c90ff51
[test_os.py]=1 # FIXME: Works on c90ff51
[test_pyclbr.py]=1 # FIXME: Works on c90ff51
[test_strftime.py]=1 # FIXME: Works on c90ff51
[test_binop.py]=1 # FIXME: Works on c90ff51?
[test_cgi.py]=1 # FIXME: Works on c90ff51?
[test_descr.py]=1 # FIXME: Works on c90ff51?
[test_doctest2.py]=1 # FIXME: Works on c90ff51?
[test_cmd_line.py]=1
[test_collections.py]=1
@@ -40,7 +31,7 @@ SKIP_TESTS=(
)
if (( batch )) ; then
if (( BATCH )) ; then
# Fails in crontab environment?
# Figure out what's up here
SKIP_TESTS[test_exception_variations.py]=1

View File

@@ -1,20 +1,9 @@
SKIP_TESTS=(
[test_binop.py]=1 # FIXME: Works on c90ff51
[test_cgi.py]=1 # FIXME: Works on c90ff51
[test_decorators.py]=1 # FIXME: Works on c90ff51
[test_pyclbr.py]=1 # FIXME: Works on c90ff51
[test_optparse.py]=1 # FIXME: Works on c90ff51
[test_os.py]=1 # FIXME: Works on c90ff51
[test_pep352.py]=1 # FIXME: Works on c90ff51
[test_pyclbr.py]=1 # FIXME: Works on c90ff51
[test_shutil.py]=1 # FIXME: Works on c90ff51
[test_strftime.py]=1 # FIXME: Works on c90ff51
[test_symtable.py]=1 # FIXME: Works on c90ff51
[test_buffer.py]=1 # FIXME: Works on c90ff51
[test_cmath.py]=1 # FIXME: Works on c90ff51
[test_atexit.py]=1 # The atexit test starting at 3.3 looks for specific comments in error lines
[test_buffer.py]=1 # parse error
[test_cmd_line.py]=1 # too long?
[test_concurrent_futures.py]=1 # too long?
@@ -42,6 +31,7 @@ SKIP_TESTS=(
[test_nntplib.py]=1
[test_pep352.py]=1 # test failures
[test_peepholer.py]=1
[test_poll.py]=1 # test takes too long to run: 11 seconds
[test_pty.py]=1 # FIXME: Needs grammar loop isolation separation
@@ -69,7 +59,7 @@ SKIP_TESTS=(
)
# About 300 unit-test files in about 20 minutes
if (( batch )) ; then
if (( BATCH )) ; then
SKIP_TESTS[test_ftplib.py]=1 # Runs too long on POWER; over 15 seconds
SKIP_TESTS[test_idle.py]=1 # No tk
SKIP_TESTS[test_pep352.py]=1 # UnicodeDecodeError may be funny on weird environments

View File

@@ -1,20 +1,18 @@
SKIP_TESTS=(
[test_buffer.py]=1 # FIXME: Works on c90ff51
[test_decorators.py]=1 # FIXME: Works on c90ff51
[test_faulthandler.py]=1 # FIXME: too long to run 20 seconds. Works on c90ff51
[test_decimal.py]=1 # FIXME: Works on c90ff51
[test_optparse.py]=1 # FIXME: Works on c90ff51
[test_os.py]=1 # FIXME: Works on c90ff51
[test_shutil.py]=1 # FIXME: Works on c90ff51
[test_strftime.py]=1 # FIXME: Works on c90ff51
[test_buffer.py]=1 # FIXME: Works on c90ff51
[test_cmath.py]=1 # FIXME: Works on c90ff51
[test_strftime.py]=1 # FIXME: Works on c90ff51
[test___all__.py]=1 # it fails on its own
[test_atexit.py]=1 # The atexit test looks for specific comments in error lines
[test_cmd_line.py]=1 # takes too long to run
[test_concurrent_futures.py]=1 # too long?
[test_configparser.py]=1 # Doesn't terminate
[test_ctypes.py]=1 # it fails on its own
[test_curses.py]=1 # Investigate
[test_dbm_gnu.py]=1 # fails on its own
[test_devpoll.py]=1 # it fails on its own
[test_descr.py]=1 # test assertion errors
@@ -23,33 +21,44 @@ SKIP_TESTS=(
[test_doctest2.py]=1
[test_doctest.py]=1 # test assert failures
[test_docxmlrpc.py]=1
[test_enum.py]=1 # compile syntax?
[test_exceptions.py]=1
[test_faulthandler.py]=1
[test_file_eintr.py]=1 # parse error
[test_fork1.py]=1 # too long
[test_gdb.py]=1 # it fails on its own
[test_grammar.py]=1 # parse error
[test_httplib.py]=1 # it fails on its own
[test_import.py]=1 # it fails on its own
[test_io.py]=1
[test_ioctl.py]=1 # it fails on its own
[test_inspect.py]=1 # Syntax error Investigate
[test_logging.py]=1 # Too long to run
[test_long.py]=1 # FIXME: Works on c90ff51
[test_modulefinder.py]=1 # test assertion error
[test_multiprocessing_fork.py]=1 # doesn't terminate
[test_multiprocessing_forkserver.py]=1 # doesn't terminate
[test_multiprocessing_main_handling.py]=1 # doesn't terminate
[test_multiprocessing_spawn.py]=1 # doesn't terminate
[test_nntplib.py]=1 # too long to run
[test_peepholer.py]=1 # control flow?
[test_pep352.py]=1 # test assert failures
[test_pickle.py]=1 # test assert failures
[test_pkgimport.py]=1 # long
[test_poll.py]=1 # Too long to run: 11 seconds
[test_pydoc.py]=1 # test assertion failures
[test_runpy.py]=1 # Too long:
[test_select.py]=1 # Too long: 11 seconds
[test_selectors.py]=1 # Too long: 11 seconds
[test_signal.py]=1 # Too long: 22 seconds
@@ -59,12 +68,15 @@ SKIP_TESTS=(
[test_subprocess.py]=1 # Too long
[test_symtable.py]=1 # Investigate bad output
[test_sys_settrace.py]=1 # test assert failures
[test_tcl.py]=1 # May be implementation specific. On POWER though it fails
[test_threading.py]=1 # Too long
[test_threadsignals.py]=1 # Too long to run: 12 seconds
[test_timeout.py]=1 # Too long to run: 19 seconds
[test_traceback.py]=1 # introspects on code
[test_urllib2net.py]=1 # Doesn't terminate
[test_zipfile64.py]=1
[test_zlib.py]=1
)

View File

@@ -1,20 +1,7 @@
SKIP_TESTS=(
[test_buffer.py]=1 # FIXME: Works on c90ff51
[test_decorators.py]=1 # FIXME: Works on c90ff51
[test_faulthandler.py]=1 # FIXME: too long to run 20 seconds. Works on c90ff51
[test_ftplib.py]=1 # Works on c90ff51
[test_marshal.py]=1 # FIXME: Works on c90ff51
[test_optparse.py]=1 # FIXME: Works on c90ff51
[test_os.py]=1 # FIXME: Works on c90ff51
[test_platform.py]=1 # FIXME: Works on c90ff51
[test_poplib.py]=1 # FIXME: Works on c90ff51
[test_pyclbr.py]=1 # FIXME: Works on c90ff51
[test_smtplib.py]=1 # FIXME: Works on c90ff51
[test_strftime.py]=1 # FIXME: Works on c90ff51
[test_shutil.py]=1 # FIXME: Works on c90ff51
[test_sysconfig.py]=1 # FIXME: Works on c90ff51
[test_tempfile.py]=1 # FIXME: Works on c90ff51
[test_uu.py]=1 # FIXME: Works on c90ff51
[test_buffer.py]=1 # FIXME: Works on c90ff51
[test_platform.py]=1 # FIXME: Works on c90ff51
[test_pyclbr.py]=1 # FIXME: Works on c90ff51
[test___all__.py]=1 # it fails on its own
[test_aifc.py]=1 #
@@ -33,7 +20,6 @@ SKIP_TESTS=(
[test_collections.py]=1
[test_compile.py]=1 # Code introspects on co_consts in a non-decompilable way
[test_concurrent_futures.py]=1 # Takes long to run
[test_coroutines.py]=1 # Syntax error Investigate
[test_curses.py]=1 #
[test_devpoll.py]=1 # it fails on its own
@@ -50,6 +36,7 @@ SKIP_TESTS=(
[test_exceptions.py]=1 # parse error
[test_format.py]=1
[test_ftplib.py]=1 # Test assertion failures
[test_gdb.py]=1 # it fails on its own
[test_glob.py]=1 #
@@ -65,6 +52,7 @@ SKIP_TESTS=(
[test_logging.py]=1 #
[test_long.py]=1 # too long run time: 20 seconds
[test_marshal.py]=1 # test assertion errors
[test_math.py]=1 # test assertion errors TypeError: a float is required
[test_modulefinder.py]=1 # test assertion error
[test_msilib.py]=1 # it fails on its own
@@ -99,7 +87,7 @@ SKIP_TESTS=(
[test_selectors.py]=1 # Takes too long 17 seconds
[test_set.py]=1 # # test assert failure and doesn't terminate
[test_signal.py]=1 # too long?
[test_smtpd.py]=1 # test failures
[test_smtplib.py]=1 # probably control flow
[test_socket.py]=1 # long
[test_socketserver.py]=1
[test_strtod.py]=1 # Test assert failure
@@ -108,6 +96,7 @@ SKIP_TESTS=(
[test_sys_settrace.py]=1 # test assert fail
[test_tcl.py]=1 # it fails on its own
[test_tempfile.py]=1 # test assertion failures
[test_thread.py]=1
[test_threading.py]=1
[test_timeout.py]=1
@@ -123,6 +112,7 @@ SKIP_TESTS=(
[test_urllib2net.py]=1 # it fails on its own
[test_urllibnet.py]=1 # it fails on its own
[test_urlparse.py]=1 # test assert error
[test_uu.py]=1 # test assert error
[test_winreg.py]=1 # it fails on its own
[test_winsound.py]=1 # it fails on its own
@@ -137,18 +127,19 @@ SKIP_TESTS=(
)
# About 260 unit-test in about 16 minutes
if (( batch )) ; then
# Fails in crontab environment?
# Figure out what's up here
if (( BATCH )) ; then
SKIP_TESTS[test_asyncore.py]=1 # Ok, but takes more than 15 seconds to run
SKIP_TESTS[test_bisect.py]=1
SKIP_TESTS[test_buffer.py]=1 # too long
SKIP_TESTS[test_compileall.py]=1 # Something weird on POWER
SKIP_TESTS[test_codeccallbacks.py]=1 # Something differenet in locale?
SKIP_TESTS[test_distutils.py]=1
SKIP_TESTS[test_exception_variations.py]=1
SKIP_TESTS[test_quopri.py]=1
SKIP_TESTS[test_ioctl.py]=1 # it fails on its own
SKIP_TESTS[test_poplib.py]=1 # May be a result of POWER installation
SKIP_TESTS[test_quopri.py]=1
SKIP_TESTS[test_sysconfig.py]=1 # POWER extension fails
SKIP_TESTS[test_tarfile.py]=1 # too long to run on POWER 15 secs
SKIP_TESTS[test_venv.py]=1 # takes too long 11 seconds
fi

View File

@@ -1,14 +1,13 @@
SKIP_TESTS=(
[test_binop.py]=1 # FIXME: Works on c90ff51
[test_cmath.py]=1 # FIXME: Works on c90ff51
[test_decorators.py]=1 # FIXME: Works on c90ff51
[test_format.py]=1 # FIXME: works on c90ff51
[test_locale.py]=1 # FIXME: Works on c90ff51
[test_optparse.py]=1 # FIXME: Works on c90ff51
[test_os.py]=1 # FIXME: Works on c90ff51
[test_pyclbr.py]=1 # FIXME: Works on c90ff51
[test_ast.py]=1 # FIXME: Works on c90ff51
[test_cmath.py]=1 # FIXME: Works on c90ff51
[test_format.py]=1 # FIXME: Works on c90ff51
[test_ftplib.py]=1 # FIXME: Works on c90ff51
[test_slice.py]=1 # FIXME: Works on c90ff51
[test_sort.py]=1 # FIXME: Works on c90ff51
[test_strftime.py]=1 # FIXME: Works on c90ff51
[test_timeit.py]=1 # FIXME: Works on c90ff51
[test_os.py]=1 # parse error FIXME: Works on c90ff51
[test___all__.py]=1 # it fails on its own
[test_aifc.py]=1 #
@@ -22,9 +21,10 @@ SKIP_TESTS=(
[test_bisect.py]=1 # it fails on its own
[test_buffer.py]=1 # parse error
[test_builtin.py]=1 # Fails on its own
[test test_capi.py]=1 # it fails on its own
[test_cmd_line.py]=1 # Interactive?
[test_codeccallbacks.py]=1 # TypeError: ... must return (str/bytes, int) tuple
[test_codecencodings_cn.py]=1 # it fails on its own
[test_codecencodings_hk.py]=1 # it fails on its own
[test_codecencodings_iso2022.py]=1 # it fails on its own
@@ -42,13 +42,14 @@ SKIP_TESTS=(
[test_concurrent_futures.py]=1 # Takes long
[test_contextlib.py]=1 # test assertion failure
[test_contextlib_async.py]=1 # Investigate
[test_coroutines.py]=1 # Parse error
[test_coroutines.py]=1 # parse error
[test_curses.py]=1 # Parse error
[test_ctypes.py]=1 # it fails on its own
[test_datetime.py]=1 # it fails on its own
[test_dbm_ndbm.py]=1 # it fails on its own
[test_decimal.py]=1
[test_decorators.py]=1 # control-flow failures
[test_descr.py]=1 # syntax error: Investigate
[test_devpoll.py]=1 # it fails on its own
[test_dict.py]=1 # it fails on its own
@@ -106,7 +107,8 @@ SKIP_TESTS=(
[test_nntplib.py]=1 # test takes too long to run: 31 seconds
[test_normalization.py]=1 # it fails on its own
[test_ordered_dict.py]= # it fails on its own
[test_optparse.py]=1 # test fails
[test_ordered_dict.py]=1 # it fails on its own
[test_ossaudiodev.py]=1 # it fails on its own
[test_pdb.py]=1 # Probably introspection
@@ -147,11 +149,13 @@ SKIP_TESTS=(
[test_startfile.py]=1 # it fails on its own
[test_statistics.py]=1 # it fails on its own
[test_string_literals.py]=1
[test_strftime.py]=1 # test assertion failures
[test_strtod.py]=1 # it fails on its own
[test_struct.py]=1 # test assertion errors
[test_subprocess.py]=1
[test_sys.py]=1 # Investigate confusing "and" with nested "if" when there is an "else
[test_sys_settrace.py]=1 # parse error
[test_sysconfig.py]=1 # if confused for ifelse in "test_triplet_in_ext_suffix"
[test_tarfile.py]=1 # it fails on its own
[test_tcl.py]=1 # Test assert failures
@@ -159,6 +163,9 @@ SKIP_TESTS=(
[test_thread.py]=1 # it fails on its own
[test_threading.py]=1
[test_threadsignals.py]=1
[test_time.py]=1 # Works but not on POWER: Rounding error?
[test_timeout.py]=1
[test_tix.py]=1 # it fails on its own
[test_tk.py]=1 # it fails on its own
@@ -177,6 +184,7 @@ SKIP_TESTS=(
[test_urllib2.py]=1 # it fails on its own
[test_urllibnet.py]=1 # it fails on its own
[test_urllib.py]=1 # it fails on its own
[test_urlparse.py]=1 # test failure
[test_venv.py]=1 # test takes too long to run: 13 seconds
@@ -195,8 +203,10 @@ SKIP_TESTS=(
)
# 236 unit-test files in about 13 minutes
if (( batch )) ; then
if (( BATCH )) ; then
SKIP_TESTS[test_codeccallbacks.py]=1
SKIP_TESTS[test_complex.py]=1 # Something funky with POWER8
# locale on test machine is probably customized
SKIP_TESTS[test__locale.py]=1
fi

View File

@@ -1,136 +1,149 @@
SKIP_TESTS=(
[test_builtin.py]=1 # FIXME works on decompyle6
[test_context.py]=1 # FIXME works on decompyle6
[test_doctest2.py]=1 # FIXME works on decompyle6
[test_format.py]=1 # FIXME works on decompyle6
[test_marshal.py]=1 # FIXME works on decompyle6
[test_normalization.py]=1 # FIXME works on decompyle6
[test_os.py]=1 # FIXME works on decompyle6
[test_pow.py]=1 # FIXME works on decompyle6
[test_slice.py]=1 # FIXME works on decompyle6
[test_sort.py]=1 # FIXME works on decompyle6
[test_statistics.py]=1 # FIXME works on decompyle6
[test_timeit.py]=1 # FIXME works on decompyle6
[test_urllib2_localnet.py]=1 # FIXME works on decompyle6
[test_urllib2.py]=1 # FIXME: works on uncompyle6
[test_generators.py]=1 # FIXME: works on uncompyle6 - lambda parsing probably
[test_grammar.py]=1 # FIXME: works on uncompyle6 - lambda parsing probably
[test___all__.py]=1 # it fails on its own
[test_argparse.py]=1 #- it fails on its own
[test_asdl_parser.py]=1 # it fails on its own
[test_ast.py]=1 # Depends on comments in code
[test_atexit.py]=1 # The atexit test looks for specific comments in error lines
[test_baseexception.py]=1 # UnboundLocalError: local variable 'exc' referenced before assignment
[test_bdb.py]=1 #
[test_buffer.py]=1 # test assertion errors
[test_builtin.py]=1 # parse error, but decompyle3 doesn't have this. (It has test assert failures though)
[test_buffer.py]=1 # parse error
[test_clinic.py]=1 # it fails on its own
[test_cmath.py]=1 # test assertion failure
[test_cmd_line.py]=1 # Interactive?
[test_cmd_line_script.py]=1
[test_compare.py]=1 # Weird test assert faiure AssertionError: [1] == [1]
[test_compileall.py]=1 # fails on its own
[test_compile.py]=1 # Code introspects on co_consts in a non-decompilable way
[test_concurrent_futures.py]=1 # too long
[test_context.py]=1
[test_coroutines.py]=1 # Investigate: Parse error - async/yield stuff?
[test_coroutines.py]=1 # parse error
[test_codecs.py]=1 # test assert failures; encoding/decoding stuff
[test_ctypes.py]=1 # it fails on its own
[test_curses.py]=1 # probably byte string not handled properly
[test_dataclasses.py]=1 # FIXME: control flow probably: AssertionError: unknown result 'exception'
[test_datetime.py]=1 # Takes too long
[test_dbm_gnu.py]=1 # Takes too long
[test_dbm_ndbm.py]=1 # it fails on its own
[test_decimal.py]=1 # test assertion failures
[test_decimal.py]=1 # parse error
[test_descr.py]=1 # test assertion failures
[test_devpoll.py]=1 # it fails on its own
[test_dis.py]=1 # We change line numbers - duh!
[test_doctest2.py]=1 # FIXME: assert failure - works on decompyle3
[test_dis.py]=1 # Investigate async out of place. Then We change line numbers - duh!
[test_doctest.py]=1 # test failures
[test_docxmlrpc.py]=1
[test_enum.py]=1 # probably bad control flow
[test_faulthandler.py]=1 # takes too long
[test_fcntl.py]=1
[test_faulthandler.py]=1 # test takes too long before decompiling
[test_fileinput.py]=1 # Test assertion failures
[test_format.py]=1 # Probably not handling bytestrings properly
[test_frame.py]=1 # test assertion errors
[test_ftplib.py]=1 # parse error
[test_functools.py]=1 # parse error
[test_fstring.py]=1 # need to disambiguate leading fstrings from docstrings
[test_functools.py]=1 # parse error
[test_gdb.py]=1 # it fails on its own
[test_generators.py]=1 # Investigate improper lamdba with bogus "False" added
[test_glob.py]=1 # TypeError: join() argument must be str or bytes, not 'tuple'
[test_grammar.py]=1 # investigate: index out of range in decompiler (template_engine?)
[test_grp.py]=1 # Doesn't terminate (killed)
[test_hashlib.py]=1 # test assert failures
[test_imaplib-3.7.py]=1 # test assert failures
[test_idle.py]=1 # Probably installation specific
[test_imaplib.py]=1 # test run loops before decompiling? More than 15 seconds to run
[test_io.py]=1 # test takes too long to run: 37 seconds
[test_imaplib.py]=1 # test assert failures
[test_imaplib.py]=1 # decompiled test loops - killing after 15 seconds
[test_inspect.py]=1 # Investigate test failures involving lambda
[test_kqueue.py]=1 # it fails on its own
[test_lib2to3.py]=1 # it fails on its own
[test_long.py]=1 # FIX: if boundaries wrong in Rat __init__
[test_logging.py]=1 # test takes too long to run: 20 seconds
[test_mailbox.py]=1
[test_marshal.py]=1
[test_mailbox.py]=1 # probably control flow
[test_math.py]=1 # test assert failures
[test_modulefinder.py]=1
[test_msilib.py]=1
[test_msilib.py]=1 # it fails on its own
[test_multiprocessing_fork.py]=1 # test takes too long to run: 62 seconds
[test_multiprocessing_forkserver.py]=1
[test_multiprocessing_spawn.py]=1
[test_normalization.py]=1 # probably control flow (uninitialized variable)
[test_nntplib.py]=1
[test_nntplib.py]=1 # Too long in running before decomplation takes 25 seconds
[test_optparse.py]=1 # doesn't terminate at test_consume_separator_stop_at_option
[test_os.py]=1 # probably control flow (uninitialized variable)
[test_ossaudiodev.py]=1 # it fails on its own
[test_pdb.py]=1 # Probably relies on comments
[test_peepholer.py]=1 # test assert error
[test_pickle.py]=1 # Probably relies on comments
[test_poll.py]=1
[test_poplib.py]=1
[test_pydoc.py]=1 # it fails on its own
[test_runpy.py]=1 #
[test_pkg.py]=1 # Investigate: lists differ
[test_pkgutil.py]=1 # Investigate:
[test_platform.py]=1 # probably control flow: uninitialized variable
[test_pow.py]=1 # probably control flow: test assertion failure
[test_poll.py]=1 # Takes too long to run before decompiling 11 seconds
[test_pwd.py]=1 # killing - doesn't terminate
[test_pydoc.py]=1 # it fails on its own
[test_regrtest.py]=1 # lists differ
[test_re.py]=1 # test assertion error
[test_richcmp.py]=1 # parse error
[test_runpy.py]=1 # Too long to run before decompiling
[test_select.py]=1 # test takes too long to run: 11 seconds
[test_selectors.py]=1
[test_selectors.py]=1 # Takes too long to run before decompling: 17 seconds
[test_shutil.py]=1 # fails on its own
[test_signal.py]=1 #
[test_slice.py]=1 # test assert error in data; Investigate
[test_smtplib.py]=1 #
[test_socket.py]=1
[test_socketserver.py]=1
[test_sort.py]=1 # Probably control flow; unintialized varaible
[test_ssl.py]=1 # Probably control flow; unintialized varaible
[test_signal.py]=1 # Takes too long to run before decompiling: 22 seconds
[test_smtplib.py]=1 # test failures
[test_socket.py]=1 # Takes too long to run before decompiling
[test_ssl.py]=1 # Takes too long to run more than 15 seconds. Probably control flow; unintialized variable
[test_startfile.py]=1 # it fails on its own
[test_statistics.py]=1 # Probably control flow; unintialized varaible
[test_string_literals.py]=1 # Investigate boolean parsing
[test_strptime.py]=1 # test assertions failed
[test_strptime.py]=1 # parfse error
[test_strtod.py]=1 # test assertions failed
[test_structmembers.py]=1 # test assertions failed
[test_struct.py]=1 # test assertions failed
[test_subprocess.py]=1
[test_sys_setprofile.py]=1 # test assertions failed
[test_struct.py]=1 # probably control flow
[test_subprocess.py]=1 # Takes too long to run before decompile: 25 seconds
[test_sys_settrace.py]=1 # parse error
[test_tarfile.py]=1 # test assertions failed
[test_threading.py]=1 #
[test_timeit.py]=1 # probably control flow uninitialized variable
[test_threading.py]=1 # test assertion failers
[test_tk.py]=1 # test takes too long to run: 13 seconds
[test_tokenize.py]=1
[test_tokenize.py]=1 # test takes too long to run before decompilation: 43 seconds
[test_trace.py]=1 # it fails on its own
[test_traceback.py]=1 # Probably uses comment for testing
[test_tracemalloc.py]=1 #
[test_tracemalloc.py]=1 # test assert failres
[test_ttk_guionly.py]=1 # implementation specfic and test takes too long to run: 19 seconds
[test_ttk_guionly.py]=1 # implementation specfic and test takes too long to run: 19 seconds
[test_typing.py]=1 # parse error
[test_types.py]=1 # parse error
[test_unicode.py]=1 # unicode thing
[test_urllib2_localnet.py]=1 #
[test_urllibnet.py]=1 # probably control flow - uninitialized variable
[test_weakref.py]=1 # probably control flow - uninitialized variable
[test_with.py]=1 # probably control flow - uninitialized variable
[test_xml_dom_minicompat.py]=1 # FIXME: parse error; imports again
[test_winconsoleio.py]=1 # it fails on its own
[test_winreg.py]=1 # it fails on its own
[test_winsound.py]=1 # it fails on its own
[test_zipfile.py]=1 # it fails on its own
[test_zipfile64.py]=1 # Too long to run
)
# 278 unit-test files in about 15 minutes
# 306 unit-test files in about 19 minutes
if (( batch )) ; then
if (( BATCH )) ; then
SKIP_TESTS[test_capi.py]=1 # more than 15 secs to run on POWER
SKIP_TESTS[test_dbm_gnu.py]=1 # fails on its own on POWER
SKIP_TESTS[test_distutils.py]=1
SKIP_TESTS[test_fileio.py]=1
SKIP_TESTS[test_gc.py]=1
SKIP_TESTS[test_idle.py]=1 # Probably installation specific
SKIP_TESTS[test_sqlite.py]=1 # fails on its own on POWER
SKIP_TESTS[test_tix.py]=1 # it fails on its own
SKIP_TESTS[test_ttk_textonly.py]=1 # Installation dependent?
SKIP_TESTS[test_venv.py]=1 # Too long to run: 11 seconds
SKIP_TESTS[test_zipimport_support.py]=1
fi

View File

@@ -1,152 +1,343 @@
SKIP_TESTS=(
[test_mimetypes.py]=1 # parse error. decompile3 works. Release 3.6.4 works?
[test_time.py]=1 # FIXME: parse eror. decompyle3 works. Release 3.6.4 works?
[test_aifc.py]=1 # parse error; decompile3 works
[test_doctest2.py]=1 # test failures release 3.6.4 works?
[test_finalization.py]=1 # test failures release 3.6.4 works?
[test_urllib2.py]=1 # FIXME: works on uncompyle6?
[test_zipimport.py]=1 # FIXME: works on uncompyle6
[test___all__.py]=1 # it fails on its own
[test_argparse.py]=1 #- it fails on its own
[test_array.py]=1 #- parse error
[test_asdl_parser.py]=1 # it fails on its own
[test_ast.py]=1 # Depends on comments in code
[test_asyncgen.py]=1 # parse error
[test_asynchat.py]=1 # parse error
[test_asyncore.py]=1 # parse error
[test_atexit.py]=1 # The atexit test looks for specific comments in error lines
[test_audioop.py]=1 # test failure
[test_audit.py]=1 # parse error
[test_base64.py]=1 # parse error
[test_baseexception.py]=1 #
[test_bigaddrspace.py]=1 # parse error
[test_bigmem.py]=1 # parse error
[test_bdb.py]=1 #
[test_binascii.py]=1 # test failure
[test_binhex.py]=1 # parse error
[test_binop.py]=1 # parse error
[test_bool.py]=1 # parse error
[test_buffer.py]=1 # parse error
[test_builtin.py]=1 # parse error
[test_bytes.py]=1 # parse error
[test_bz2.py]=1 # parse error
[test_calendar.py]=1 # parse error
[test_cgi.py]=1 # parse error
[test_cgitb.py]=1 # parse error
[test_clinic.py]=1 # it fails on its own
[test_cmath.py]=1 # test assertion failure
[test_cmd.py]=1 # parse error
[test_cmd_line.py]=1 # Interactive?
[test_cmd_line_script.py]=1
[test_code_module.py]=1 # test failure
[test_codecmaps_cn.py]=1 # test before decompile takes too long to run 135 secs
[test_codecmaps_hk.py]=1 # test before decompile takes too long to run 46 secs
[test_codecs.py]=1
[test_collections.py]=1
[test_compare.py]=1
[test_compileall.py]=1 # fails on its own
[test_compile.py]=1
[test_compileall.py]=1 # fails on its own
[test_complex.py]=1 # Investigate
[test_concurrent_futures.py]=1 # too long
[test_configparser.py]=1
[test_context.py]=1
[test_contextlib.py]=1 # parse error
[test_contextlib_async.py]=1 # parse error
[test_coroutines.py]=1 # Parse error
[test_codecs.py]=1
[test_compile.py]=1 # Parse error, but after that, the code introspects on co_consts in a non-decompilable way
[test_complex.py]=1 # Investigate
[test_cprofile.py]=1 # parse error
[test_crypt.py]=1 # Parse error
[test_csv.py]=1 # Parse error
[test_ctypes.py]=1 # it fails on its own
[test_curses.py]=1 # Parse error
[test_dataclasses.py]=1 # test assertion errors
[test_datetime.py]=1 # Takes too long
[test_dbm.py]=1 # parse error
[test_dbm_dumb.py]=1 # parse error
[test_dbm_gnu.py]=1 # Takes too long
[test_dbm_ndbm.py]=1 # it fails on its own
[test_decimal.py]=1 # Parse error
[test_decorators.py]=1 # parse error
[test_deque.py]=1 # parse error
[test_descr.py]=1 # Parse error
[test_descrtut.py]=1 # parse error
[test_devpoll.py]=1 # it fails on its own
[test_dict.py]=1 # parse error
[test_dictcomps.py]=1 # Bad semantics - Investigate
[test_difflib.py]=1 # parse error
[test_dis.py]=1 # We change line numbers - duh!
[test_doctest.py]=1 # parse error
[test_doctest2.py]=1 # test faiures relesae 3.6.4 works?
[test_docxmlrpc.py]=1
[test_dtrace.py]=1 # parse error
[test_dummy_thread.py]=1 # parse error
[test_exceptions.py]=1 # parse error
[test_enumerate.py]=1 #
[test_embed.py]=1 # parse error
[test_ensureip.py]=1 #
[test_ensurepip.py]=1 # parse error
[test_enum.py]=1 #
[test_enumerate.py]=1 #
[test_eof.py]=1 # parse error
[test_epoll.py]=1 # parse error
[test_exception_hierarchy.py]=1 # control flow?
[test_exceptions.py]=1 # parse error
[test_faulthandler.py]=1 # takes too long
[test_file_eintr.py]=1 # too long to run test; works on 3.7.7
[test_fcntl.py]=1
[test_filecmp.py]=1 # parse error
[test_fileinput.py]=1
[test_float.py]=1
[test_fileio.py]=1
[test_float.py]=1 # Takes a long time to decompile
[test_flufl.py]=1 # parse error
[test_format.py]=1
[test_frame.py]=1
[test_frozen.py]=1 # parse error
[test_fstring.py]=1 # Investigate
[test_ftplib.py]=1
[test_functools.py]=1
[test_future.py]=1 # parse error
[test___future__.py]=1 # test failure
[test_future5.py]=1 # parse error
[test_gc.py]=1 # parse error
[test_gdb.py]=1 # it fails on its own
[test_genericpath.py]=1 # parse error
[test_generators.py]=1 # improper decompile of assert i < n and (n-i) % 3 == 0
[test_getpass.py]=1 # parse error
[test_gettext.py]=1 # parse error
[test_glob.py]=1 #
[test_grammar.py]=1
[test_grp.py]=1 # Doesn't terminate (killed)
[test_gzip.py]=1 # parse error
[test_hashlib.py]=1 # test assert failures
[test_heapq.py]=1 # test failure
[test_hmac.py]=1 # parse error
[test_httplib.py]=1 # parse error
[test_http_cookiejar.py]=1
[test_imaplib-3.7.py]=1
[test_idle.py]=1 # Probably installation specific
[test_httpservers.py]=1 # parse error
[test_imghdr.py]=1 # parse error
[test_imp.py]=1 # parse error
[test_int.py]=1 # parse error
[test_io.py]=1 # test takes too long to run: 37 seconds
[test_ioctl.py]=1 # parse error
[test_imaplib.py]=1
[test_ipaddress.py]=1 # parse error
[test_index.py]=1
[test_inspect.py]=1
[test_iter.py]=1 # parse error
[test_itertools.py]=1 # parse error
[test_keywordonlyarg.py]=1 # parse error
[test_kqueue.py]=1 # it fails on its own
[test__locale.py]=1 # parse error
[test_largefile.py]=1 # parse error
[test_lib2to3.py]=1 # it fails on its own
[test_long.py]=1 # investigate
[test_linecache.py]=1 # parse error
[test_lltrace.py]=1 # parse error
[test_locale.py]=1 # parse error
[test_logging.py]=1 # test takes too long to run: 20 seconds
[test_mailbox.py]=1
[test_long.py]=1 # investigate
[test_lzma.py]=1 # it fails on its own
[test_mailbox.py]=1 # parse error
[test_mailcap.py]=1 # parse error
[test_marshal.py]=1
[test_math.py]=1
[test_memoryio.py]=1 # test failure
[test_memoryview.py]=1 # parse error
[test_minidom.py]=1 # test failure
[test_mmap.py]=1 # parse error
[test_modulefinder.py]=1
[test_msilib.py]=1
[test_multiprocessing_fork.py]=1 # test takes too long to run: 62 seconds
[test_multiprocessing_forkserver.py]=1
[test_multiprocessing_main_handling.py]=1 # parse error
[test_multiprocessing_spawn.py]=1
[test_named_expressions.py]=1 # parse error
[test_netrc.py]=1 # parse error
[test_nis.py]=1 # break outside of loop
[test_normalization.py]=1 # probably control flow (uninitialized variable)
[test_nntplib.py]=1
[test_ntpath.py]=1
[test__osx_support.py]=1 # parse error
[test_opcodes.py]=1 # parse error
[test_operator.py]=1 # parse error
[test_optparse.py]=1 # doesn't terminate (killed)
[test_ordered_dict.py]=1 # parse error
[test_os.py]=1 # probably control flow (uninitialized variable)
[test_ossaudiodev.py]=1 # it fails on its own
[test_osx_env.py]=1 # parse error
[test_pathlib.py]=1 # parse error
[test_pdb.py]=1 # Probably relies on comments
[test_peepholer.py]=1 # decompile takes a long time; then test assert error
[test_pickle.py]=1 # Probably relies on comments
[test_poll.py]=1
[test_poplib.py]=1
[test_pydoc.py]=1 # it fails on its own
[test_runpy.py]=1 #
[test_pkg.py]=1 # parse error; Investigate: lists differ
[test_pkgutil.py]=1 # parse error
[test_picklebuffer.py]=1 # parse error
[test_pipes.py]=1 # parse error
[test_pkg.py]=1 # Investigate: lists differ
[test_pkgimport.py]=1 # parse error
[test_pkgutil.py]=1 # Investigate:
[test_platform.py]=1 # parse error
[test_plistlib.py]=1 # parse error
[test_poll.py]=1
[test_popen.py]=1 # parse error
[test_poplib.py]=1 # Parse error
[test_positional_only_arg.py]=1 # test failures
[test_posixpath.py]=1 # parse error
[test_posix.py]=1 # parse error
[test_print.py]=1 # parse error
[test_profile.py]=1 # parse error
[test_pwd.py]=1 # killing - doesn't terminate
[test_regrtest.py]=1 # parse error; test assertion error: lists differ
[test_re.py]=1 # parse error; test assertion error
[test_richcmp.py]=1 # Investigate: data[i] index error in semantic handling
[test_pulldom.py]=1 # killing - doesn't terminate
[test_py_compile.py]=1 # parse error
[test_pyexpat.py]=1 # parse error
[test_pyclbr.py]=1 # test failure
[test_pydoc.py]=1 # it fails on its own
[test_queue.py]=1 # parse error
[test_raise.py]=1 # parse error
[test_random.py]=1 # parse error
[test_range.py]=1 # parse error
[test_rcompleter.py]=1 # parse error
[test_re.py]=1 # test assertion error
[test_readline.py]=1 # parse error
[test_robotparser.py]=1 # too long to run before decompiling: 31 secs
[test_regrtest.py]=1 # lists differ
[test_reprlib.py]=1 # parse error
[test_resource.py]=1 # parse error
[test_richcmp.py]=1 # parse error
[test_runpy.py]=1 #
[test_sax.py]=1 # parse error
[test_sched.py]=1 # parse error
[test_scope.py]=1 # parse error
[test_script_helper.py]=1 # parse error
[test_select.py]=1 # test takes too long to run: 11 seconds
[test_selectors.py]=1
[test_set.py]=1 # parse error
[test_shelve.py]=1 # parse error
[test_shlex.py]=1 # probably control flow
[test_shutil.py]=1 # fails on its own
[test_signal.py]=1 #
[test_slice.py]=1 # Investigate: test assertion error
[test_site.py]=1 # parse error
[test_slice.py]=1 # Investigate
[test_smtpd.py]=1 # parse error
[test_smtplib.py]=1 #
[test_smtpnet.py]=1 # parse error
[test_socket.py]=1
[test_socketserver.py]=1
[test_sort.py]=1 # parse error;
[test_ssl.py]=1 # parse error
[test_sort.py]=1 # Probably control flow; unintialized varaible
[test_source_encoding.py]=1 # parse error
[test_spwd.py]=1 # parse error
[test_ssl.py]=1 # Probably control flow; unintialized varaible
[test_startfile.py]=1 # it fails on its own
[test_statistics.py]=1 # Takes more than 15 secs to run. Assert failures
[test_stat.py]=1 # parse error; test assertions failed
[test_string_literals.py]=1 # parse error; Investigate boolean parsing
[test_stat.py]=1 # test assertions failed
[test_statistics.py]=1 # Probably control flow; unintialized varaible
[test_strftime.py]=1 # parse error
[test_string.py]=1 # parse error
[test_string_literals.py]=1 # parse error
[test_strptime.py]=1 # test assertions failed
[test_strtod.py]=1 # test assertions failed
[test_structmembers.py]=1 # test assertions failed
[test_struct.py]=1 # test assertions failed
[test_structmembers.py]=1 # test assertions failed
[test_subclassinit.py]=1 # parse error
[test_subprocess.py]=1
[test_super.py]=1 # parse error
[test_support.py]=1 # parse error
[test_symbol.py]=1 # parse error
[test_sys.py]=1 # parse error
[test_sys_setprofile.py]=1 # test assertions failed
[test_sys_settrace.py]=1 # parse error
[test_sysconfig.py]=1 # parse error
[test_tabnanny.py]=1 # parse error
[test_tarfile.py]=1 # parse error
[test_tcl.py]=1 # parse error
[test_telnetlib.py]=1 # parse error
[test_tempfile.py]=1 # parse error
[test_thread.py]=1 # parse error
[test_threaded_import.py]=1 # parse error
[test_threading.py]=1 #
[test_timeit.py]=1 # probably control flow uninitialized variable
[test_timeout.py]=1 # parse error
[test_tk.py]=1 # test takes too long to run: 13 seconds
[test_tokenize.py]=1
[test_trace.py]=1 # it fails on its own
[test_traceback.py]=1 # Probably uses comment for testing
[test_tracemalloc.py]=1 #
[test_ttk_guionly.py]=1 # implementation specfic and test takes too long to run: 19 seconds
[test_typing.py]=1 # parse error
[test_turtle_import.py]=1 # parse error
[test_turtle.py]=1 # parse error
[test_types.py]=1 # parse error
[test_typing.py]=1 # parse error
[test_ucn.py]=1 # parse error
[test_unicode.py]=1 # unicode thing
[test_unicode_file_functions.py]=1 # parse faiure
[test_unicodedata.py]=1 # test faiure
[test_univnewlines.py]=1 # parse error
[test_urllib.py]=1 # parse error
[test_urllib2.py]=1 #
[test_urllib_response.py]=1 # parse error
[test_urllib2_localnet.py]=1 #
[test_urllib2net.py]=1 # parse error
[test_urllibnet.py]=1 # probably control flow - uninitialized variable
[test_urlparse.py]=1 # parse error
[test_userdict.py]=1 # test failures
[test_userstring.py]=1 # parse error
[test_utf8.py]=1 # parse error
[test_utf8_mode.py]=1 # parse error
[test_uu.py]=1 # parse error
[test_uuid.py]=1 # parse error
[test_venv.py]=1 # parse error
[test_weakref.py]=1 # probably control flow - uninitialized variable
[test_weakset.py]=1 # parse error
[test_webbrowser.py]=1 # parse error
[test_with.py]=1 # probably control flow - uninitialized variable
[test_xml_dom_minicompat.py]=1 # parse error
[test_winconsoleio.py]=1 # it fails on its own
[test_winreg.py]=1 # it fails on its own
[test_winsound.py]=1 # it fails on its own
[test_wsgiref.py]=1 # parse error
[test_xml_etree.py]=1 # parse error
[test_xmlrpc.py]=1 # parse error
[test__xxsubinterpreters.py]=1 # parse error
[test_yield_from.py]=1 # parse error
[test_zlib.py]=1 # test looping take more than 15 seconds to run
[test_zipapp.py]=1 # parse error
[test_zipimport_support.py]=1 # parse error
[test_zipfile.py]=1 # it fails on its own
[test_zipfile64.py]=1 #
)
# 268 About unit-test files, in about 11 minutes
# 114 test files, Elapsed time about 7 minutes
if (( BATCH )) ; then
SKIP_TESTS[test_idle.py]=1 # Probably installation specific
SKIP_TESTS[test_tix.py]=1 # fails on its own
SKIP_TESTS[test_ttk_textonly.py]=1 # Installation dependent?
fi

View File

@@ -19,6 +19,6 @@ bytecode = "%s-%s.pyc" % (basename, PY_VERSION)
import py_compile
print("compiling %s to %s" % (source, bytecode))
py_compile.compile(source, bytecode, 'exec')
py_compile.compile(source, bytecode, source)
# import os
# os.system("../bin/uncompyle6 %s" % bytecode)

View File

@@ -3,28 +3,50 @@
function displaytime {
printf "ran in "
local T=$1
local D=$((T/60/60/24))
local H=$((T/60/60%24))
local M=$((T/60%60))
local S=$((T%60))
(( $D > 0 )) && printf '%d days ' $D
(( $H > 0 )) && printf '%d hours ' $H
(( $M > 0 )) && printf '%d minutes ' $M
(( $D > 0 || $H > 0 || $M > 0 )) && printf 'and '
((D=T/60/60/24))
((H=T/60/60%24))
((M=T/60%60))
((S=T%60))
(( D > 0 )) && printf '%d days ' $D
(( H > 0 )) && printf '%d hours ' $H
(( M > 0 )) && printf '%d minutes ' $M
(( D > 0 || H > 0 || M > 0 )) && printf 'and '
printf '%d seconds\n' $S
}
. ../../admin-tools/pyenv-newer-versions
bs=${BASH_SOURCE[0]}
if [[ $0 != $bs ]] ; then
echo "This script should not be *sourced* but run through bash"
exit 1
fi
mydir=$(dirname $bs)
cd $mydir
branch=$(cat ../../.git/HEAD | cut -d'/' -f 3)
if [[ $branch == 'python-2.4' ]]; then
. ../../admin-tools/pyenv-older-versions
elif [[ $branch == 'master' ]]; then
. ../../admin-tools/pyenv-newer-versions
else
echo &1>2 "Error git branch should either be 'master' or 'python-2.4'; got: '$branch'"
exit 1
fi
MAIN="runtests.sh"
USER=${USER:-rocky}
EMAIL=${EMAIL:-rb@dustyfeet.com}
SUBJECT_PREFIX="stdlib unit testing for"
WHAT="uncompyle6 ${MAIN}"
export BATCH=1
typeset -i RUN_STARTTIME=$(date +%s)
actual_versions=""
DEBUG="" # -x
MAILBODY=/tmp/${MAIN}-mailbody-$$.txt
for VERSION in $PYVERSIONS ; do
typeset -i rc=0
LOGFILE=/tmp/runtests-$VERSION-$$.log
@@ -34,24 +56,37 @@ for VERSION in $PYVERSIONS ; do
continue
;;
esac
actual_versions="$actual_versions $VERSION"
if ! pyenv local $VERSION ; then
rc=1
else
STOP_ONERROR=1 /bin/bash $DEBUG ./runtests.sh >$LOGFILE 2>&1
rc=$?
typeset -i ALL_FILES_STARTTIME=$(date +%s)
STOP_ONERROR=1 /bin/bash $DEBUG ./runtests.sh >$LOGFILE 2>&1
rc=$?
echo Python Version $(pyenv local) >> $LOGFILE
echo "" >>$LOGFILE
typeset -i ALL_FILES_ENDTIME=$(date +%s)
(( time_diff = ALL_FILES_ENDTIME - ALL_FILES_STARTTIME))
time_str=$(displaytime $time_diff)
echo ${time_str}. >> $LOGFILE
fi
SUBJECT_PREFIX="runtests verify for"
SUBJECT_PREFIX="$WHAT for"
if ((rc == 0)); then
mailbody_line="Python $VERSION ok; ${time_str}."
tail -v $LOGFILE | mail -s "$SUBJECT_PREFIX $VERSION ok" ${USER}@localhost
else
mailbody_line="Python $VERSION failed; ${time_str}."
tail -v $LOGFILE | mail -s "$SUBJECT_PREFIX $VERSION not ok" ${USER}@localhost
tail -v $LOGFILE | mail -s "$SUBJECT_PREFIX $VERSION not ok" $EMAIL
tail -v $LOGFILE | mail -s "$HOST $SUBJECT_PREFIX $VERSION not ok" $EMAIL
fi
echo $mailbody_line >> $MAILBODY
done
typeset -i RUN_ENDTIME=$(date +%s)
(( time_diff = RUN_ENDTIME - RUN_STARTTIME))
elapsed_time=$(displaytime $time_diff)
echo "Run complete $elapsed_time for versions $actual_versions" | mail -s "runtests in $elapsed_time" ${EMAIL}
echo "${WHAT} complete; ${elapsed_time}." >> $MAILBODY
echo "Full results are in ${LOGFILE}." >> $MAILBODY
cat $MAILBODY | mail -s "$HOST $WHAT $elapsed_time" ${EMAIL}

View File

@@ -1,10 +1,12 @@
#!/bin/bash
me=${BASH_SOURCE[0]}
typeset -i batch=1
isatty=$(/usr/bin/tty 2>/dev/null)
if [[ -n $isatty ]] && [[ "$isatty" != 'not a tty' ]] ; then
batch=0
typeset -i BATCH=${BATCH:-0}
if (( ! BATCH )) ; then
isatty=$(/usr/bin/tty 2>/dev/null)
if [[ -n $isatty ]] && [[ "$isatty" != 'not a tty' ]] ; then
BATCH=0
fi
fi
@@ -51,20 +53,7 @@ function timeout_cmd {
typeset -A SKIP_TESTS
case $PYVERSION in
2.4)
SKIP_TESTS=(
[test_decimal.py]=1 #
[test_dis.py]=1 # We change line numbers - duh!
[test_generators.py]=1 # Investigate
[test_grammar.py]=1 # Too many stmts. Handle large stmts
[test_grp.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_socketserver.py]=1 # -- test takes too long to run: 40 seconds
[test_threading.py]=1 # test takes too long to run: 11 seconds
[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.4-exclude.sh
;;
2.5)
. ./2.5-exclude.sh
@@ -85,7 +74,7 @@ case $PYVERSION in
[test_dis.py]=1 # We change line numbers - duh!
[test_fileio.py]=1
)
if (( batch )) ; then
if (( BATCH )) ; then
# Fails in crontab environment?
# Figure out what's up here
SKIP_TESTS[test_exception_variations.py]=1
@@ -98,7 +87,7 @@ case $PYVERSION in
[test_dis.py]=1 # We change line numbers - duh!
[test_fileio.py]=1
)
if (( batch )) ; then
if (( BATCH )) ; then
# Fails in crontab environment?
# Figure out what's up here
SKIP_TESTS[test_exception_variations.py]=1
@@ -142,6 +131,7 @@ fulldir=$(pwd)
# DECOMPILER=uncompyle2
DECOMPILER=${DECOMPILER:-"$fulldir/../../bin/uncompyle6"}
OPTS=${OPTS:-""}
TESTDIR=/tmp/test${PYVERSION}
if [[ -e $TESTDIR ]] ; then
rm -fr $TESTDIR
@@ -150,6 +140,8 @@ fi
PYENV_ROOT=${PYENV_ROOT:-$HOME/.pyenv}
pyenv_local=$(pyenv local)
echo Python version is $pyenv_local
# pyenv version update
for dir in ../ ../../ ; do
cp -v .python-version $dir
@@ -158,18 +150,25 @@ done
mkdir $TESTDIR || exit $?
cp -r ${PYENV_ROOT}/versions/${PYVERSION}.${MINOR}/lib/python${PYVERSION}/test $TESTDIR
cd $TESTDIR/test
if [[ $PYVERSION == 3.2 ]] ; then
cp ${PYENV_ROOT}/versions/${PYVERSION}.${MINOR}/lib/python${PYVERSION}/test/* $TESTDIR
cd $TESTDIR
else
cd $TESTDIR/test
fi
pyenv local $FULLVERSION
export PYTHONPATH=$TESTDIR
export PATH=${PYENV_ROOT}/shims:${PATH}
DONT_SKIP_TESTS=${DONT_SKIP_TESTS:-0}
# Run tests
typeset -i i=0
typeset -i allerrs=0
if [[ -n $1 ]] ; then
files=$1
typeset -a files_ary=( $(echo $1) )
if (( ${#files_ary[@]} == 1 )) ; then
files=$@
typeset -a files_ary=( $(echo $@) )
if (( ${#files_ary[@]} == 1 || DONT_SKIP_TESTS == 1 )) ; then
SKIP_TESTS=()
fi
else
@@ -179,9 +178,12 @@ fi
typeset -i ALL_FILES_STARTTIME=$(date +%s)
typeset -i skipped=0
NOT_INVERTED_TESTS=${NOT_INVERTED_TESTS:-1}
for file in $files; do
# AIX bash doesn't grok [[ -v SKIP... ]]
if [[ ${SKIP_TESTS[$file]} == 1 ]] ; then
[[ -z ${SKIP_TESTS[$file]} ]] && SKIP_TESTS[$file]=0
if [[ ${SKIP_TESTS[$file]} == ${NOT_INVERTED_TESTS} ]] ; then
((skipped++))
continue
fi
@@ -198,7 +200,7 @@ for file in $files; do
typeset -i ENDTIME=$(date +%s)
typeset -i time_diff
(( time_diff = ENDTIME - STARTTIME))
if (( time_diff > 10 )) ; then
if (( time_diff > $timeout )) ; then
echo "Skipping test $file -- test takes too long to run: $time_diff seconds"
continue
fi
@@ -210,7 +212,7 @@ for file in $files; do
$fulldir/compile-file.py $file && \
mv $file{,.orig} && \
echo ========== $(date +%X) Decompiling $file ===========
$DECOMPILER $decompiled_file > $file
$DECOMPILER $OPTS $decompiled_file > $file
rc=$?
if (( rc == 0 )) ; then
echo ========== $(date +%X) Running $file ===========

View File

@@ -228,6 +228,6 @@ if __name__ == "__main__":
# Verification notes:
# - xdrlib fails verification due the same lambda used twice
# (verification is successfull when using original .pyo as
# (verification is successful when using original .pyo as
# input)
#

View File

@@ -1,7 +0,0 @@
# Whatever it is you want to do, it should be forwarded to the
# to top-level irectories
PHONY=check all
all: check
%:
$(MAKE) -C .. $@

View File

@@ -18,7 +18,7 @@ Usage:
Disassemble FILE with the instruction mangling that is done to
assist uncompyle6 in parsing the instruction stream. For example
instructions with variable-length arguments like CALL_FUNCTION and
BUILD_LIST have arguement counts appended to the instruction name, and
BUILD_LIST have argument counts appended to the instruction name, and
COME_FROM instructions are inserted into the instruction stream.
Examples:

Some files were not shown because too many files have changed in this diff Show More