OK, to investigate the failures a bit further, I turned off the traceback suppression altogether by sticking an immediate return at the start of remove_importlib_frames. For the three failing tests, this is what I got when adding a traceback.print_tb call:
test_broken_from (test.test_import.ImportTracebackTests) ... File "/home/ncoghlan/devel/py3k/Lib/test/test_import.py", line 890, in test_broken_from
from _parent_foo import bar
File "<frozen importlib._bootstrap>", line 1572, in _handle_fromlist
File "<frozen importlib._bootstrap>", line 1524, in _find_and_load
File "<frozen importlib._bootstrap>", line 1491, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 571, in _check_name_wrapper
File "<frozen importlib._bootstrap>", line 1002, in load_module
File "<frozen importlib._bootstrap>", line 983, in load_module
File "<frozen importlib._bootstrap>", line 547, in module_for_loader_wrapper
File "<frozen importlib._bootstrap>", line 853, in _load_module
File "<frozen importlib._bootstrap>", line 860, in _exec_module
File "./_parent_foo/bar.py", line 1, in <module>
1/0
FAIL
test_broken_parent (test.test_import.ImportTracebackTests) ... File "/home/ncoghlan/devel/py3k/Lib/test/test_import.py", line 902, in test_broken_parent
import _parent_foo.bar
File "<frozen importlib._bootstrap>", line 1524, in _find_and_load
File "<frozen importlib._bootstrap>", line 1475, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1524, in _find_and_load
File "<frozen importlib._bootstrap>", line 1491, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 571, in _check_name_wrapper
File "<frozen importlib._bootstrap>", line 1002, in load_module
File "<frozen importlib._bootstrap>", line 983, in load_module
File "<frozen importlib._bootstrap>", line 547, in module_for_loader_wrapper
File "<frozen importlib._bootstrap>", line 853, in _load_module
File "<frozen importlib._bootstrap>", line 860, in _exec_module
File "./_parent_foo/__init__.py", line 1, in <module>
1/0
FAIL
test_syntax_error (test.test_import.ImportTracebackTests) ... File "/home/ncoghlan/devel/py3k/Lib/test/test_import.py", line 851, in test_syntax_error
import foo
File "<frozen importlib._bootstrap>", line 1524, in _find_and_load
File "<frozen importlib._bootstrap>", line 1491, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 571, in _check_name_wrapper
File "<frozen importlib._bootstrap>", line 1002, in load_module
File "<frozen importlib._bootstrap>", line 983, in load_module
File "<frozen importlib._bootstrap>", line 547, in module_for_loader_wrapper
File "<frozen importlib._bootstrap>", line 838, in _load_module
File "<frozen importlib._bootstrap>", line 960, in get_code
FAIL
And here's what I get with my patched version enabled (which also ignores chunks ending with get_code when the failure is a syntax error):
test_broken_from (test.test_import.ImportTracebackTests) ... File "/home/ncoghlan/devel/py3k/Lib/test/test_import.py", line 890, in test_broken_from
from _parent_foo import bar
File "<frozen importlib._bootstrap>", line 1572, in _handle_fromlist
File "./_parent_foo/bar.py", line 1, in <module>
1/0
FAIL
test_broken_parent (test.test_import.ImportTracebackTests) ... File "/home/ncoghlan/devel/py3k/Lib/test/test_import.py", line 902, in test_broken_parent
import _parent_foo.bar
File "<frozen importlib._bootstrap>", line 1524, in _find_and_load
File "<frozen importlib._bootstrap>", line 1475, in _find_and_load_unlocked
File "./_parent_foo/__init__.py", line 1, in <module>
1/0
FAIL
test_syntax_error (test.test_import.ImportTracebackTests) ... File "/home/ncoghlan/devel/py3k/Lib/test/test_import.py", line 851, in test_syntax_error
import foo
FAIL |