python testrunner/app_level_tests.py in dir /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build (timeout 4000 secs) watching logfiles {'pytestLog': 'pytest-A.log'} argv: ['python', 'testrunner/app_level_tests.py'] environment: HOME=/Users/matti HOMEBREW_CELLAR=/opt/homebrew_x86_64/Cellar HOMEBREW_PREFIX=/opt/homebrew_x86_64 HOMEBREW_REPOSITORY=/opt/homebrew_x86_64 INFOPATH=/opt/homebrew_x86_64/share/info: LANG=en_US.UTF-8 LC_ADDRESS=en_AU.UTF-8 LC_IDENTIFICATION=en_AU.UTF-8 LC_MEASUREMENT=en_AU.UTF-8 LC_MONETARY=en_AU.UTF-8 LC_NAME=en_AU.UTF-8 LC_NUMERIC=en_AU.UTF-8 LC_PAPER=en_AU.UTF-8 LC_TELEPHONE=en_AU.UTF-8 LC_TIME=en_AU.UTF-8 LOGNAME=matti OLDPWD=/Users/matti PATH=/Users/matti/oss/pypy-x86_64-buildbot/bin:/opt/homebrew_x86_64/bin:/opt/homebrew_x86_64/sbin:/Library/Frameworks/Python.framework/Versions/3.11/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin PKG_CONFIG_PATH=/opt/homebrew_x86_64/opt/openssl@1.1/lib/pkgconfig PWD=/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build PYPY_USESSION_DIR=/tmp/buildbot-x86_64 SHELL=/bin/zsh SHLVL=2 SSH_CLIENT=10.0.0.17 57960 22 SSH_CONNECTION=10.0.0.17 57960 10.0.0.16 22 SSH_TTY=/dev/ttys000 TERM=xterm-256color TMPDIR=/tmp/buildbot-x86_64/pytest USER=matti _=/Users/matti/oss/pypy-x86_64-buildbot/bin/buildslave using PTY: False using config pypy/pytest-A.cfg using config pypy/pytest-A.py ignoring non-existant config /Users/matti/machine-A_cfg.py -- interpreter/astcompiler/test -- interpreter/pyparser/test -- interpreter/test -- objspace/test -- objspace/std/test -- module/__builtin__/test -- module/__pypy__/test -- module/_abc/test -- module/_ast/test -- module/_cffi_backend/test -- module/_codecs/test -- module/_collections/test -- module/_continuation/test -- module/_cppyy/test -- module/_csv/test -- module/_demo/test -- module/_hpy_universal/test/_vendored -- module/_hpy_universal/test/pypy -- module/_io/test -- module/_jitlog/test -- module/_locale/test -- module/_lsprof/test -- module/_md5/test -- module/_minimal_curses/test -- module/_multibytecodec/test -- module/_multiprocessing/test -- module/_opcode/test -- module/_pickle/test -- module/_pickle_support/test -- module/_posixsubprocess/test -- module/_pypyjson/test -- module/_random/test -- module/_rawffi/alt/test -- module/_rawffi/test -- module/_socket/test -- module/_sre/test -- module/_vmprof/test -- module/_warnings/test -- module/_weakref/test -- module/_winreg/test -- module/array/test -- module/atexit/test -- module/binascii/test -- module/bz2/test -- module/cmath/test -- module/cpyext/test -- module/crypt/test -- module/errno/test -- module/exceptions/test -- module/faulthandler/test -- module/fcntl/test -- module/gc/test -- module/imp/test -- module/itertools/test -- module/marshal/test -- module/math/test -- module/micronumpy/test -- module/mmap/test -- module/operator/test -- module/posix/test -- module/pwd/test -- module/pyexpat/test -- module/pypyjit/test -- module/select/test -- module/signal/test -- module/struct/test -- module/sys/test -- module/termios/test -- module/test_lib_pypy -- module/thread/test -- module/time/test -- module/token/test -- module/unicodedata/test -- module/zipimport/test -- module/zlib/test -- total: 75 to run ++ 10:07:40 starting interpreter/astcompiler/test [1 started in total] __ interpreter/astcompiler/test [1 done in total, somefailed=False] ___________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 15 items interpreter/astcompiler/test/test_compiler.py ..s............ ===================== 14 passed, 1 skipped in 1.66 seconds ===================== ++ 10:07:45 starting interpreter/pyparser/test [2 started in total] __ interpreter/pyparser/test [2 done in total, somefailed=False] ______________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.12 seconds ========================= ++ 10:07:47 starting interpreter/test [3 started in total] __ interpreter/test [3 done in total, somefailed=False] _______________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 192 items interpreter/test/test_app_main.py sss interpreter/test/test_appinterp.py . interpreter/test/test_argument.py ............... interpreter/test/test_code.py ........... interpreter/test/test_compiler.py .......................s.................................. interpreter/test/test_exceptcomp.py ......... interpreter/test/test_executioncontext.py .... interpreter/test/test_extmodules.py s interpreter/test/test_gateway.py ....... interpreter/test/test_interpreter.py .............. interpreter/test/test_mixedmodule.py ssss interpreter/test/test_module.py ............... interpreter/test/test_pyframe.py ..... interpreter/test/test_special.py ... interpreter/test/test_syntax.py . interpreter/test/test_typedef.py ........... interpreter/test/test_zzpickle_and_slow.py .............................. ==================== 183 passed, 9 skipped in 17.57 seconds ==================== ++ 10:08:11 starting objspace/test [4 started in total] __ objspace/test [4 done in total, somefailed=False] __________________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.01 seconds ========================= ++ 10:08:14 starting objspace/std/test [5 started in total] __ objspace/std/test [5 done in total, somefailed=True] _______________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 1340 items objspace/std/test/test_bytearrayobject.py ..................................................................................... objspace/std/test/test_bytesobject.py .............................................................................................. objspace/std/test/test_celldict.py ......sss objspace/std/test/test_dictmultiobject.py .............................................................................................................................................ssssssss objspace/std/test/test_dictproxy.py ................ objspace/std/test/test_floatobject.py ................................................. objspace/std/test/test_identitydict.py sssss objspace/std/test/test_identityset.py sssssss objspace/std/test/test_index.py ................................... objspace/std/test/test_intobject.py .......................................................................................................................... objspace/std/test/test_jsondict.py .......... objspace/std/test/test_kwargsdict.py sssssss objspace/std/test/test_listobject.py ................................................................................... objspace/std/test/test_longobject.py ...................................s........... objspace/std/test/test_mapdict.py ..................ssssssssssssssssssssssssssssssssssssssssssssssss objspace/std/test/test_memoryobject.py .......................................... objspace/std/test/test_methodcache.py sssssss objspace/std/test/test_newformat.py ...................................................F........... objspace/std/test/test_obj.py ...................................... objspace/std/test/test_prebuiltint.py ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss objspace/std/test/test_proxy.py ssssssssssss objspace/std/test/test_proxy_function.py ........ objspace/std/test/test_proxy_internals.py s...... objspace/std/test/test_proxy_iter.py . objspace/std/test/test_proxy_object.py .......... objspace/std/test/test_proxy_usercreated.py s objspace/std/test/test_setobject.py .......................................................................................... objspace/std/test/test_smalllongobject.py ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss objspace/std/test/test_specialisedtupleobject.py ................... objspace/std/test/test_typeobject.py ....sssssssssss objspace/std/test/test_unicodeobject.py .... objspace/std/test/test_userobject.py . =================================== FAILURES =================================== __________________ AppTestFloatFormatting.test_locale_german ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b...', x, grouping=True) == '1234,57' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AssertionError > func = <function <lambda> at 0x00007fa5a2221538>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_locale_german'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_locale_german'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fa5c08da528> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_locale_german'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_locale_german'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_locale_german'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_locale_german'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_locale_german'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fa5a2249150> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ale_german'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fa5a223d8e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fa5a223d8e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ale_german'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_locale_german'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_locale_german'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_locale_german'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_locale_german at 0x00007fa5a96dd100> usemodules = ['_locale'], definitions = {}, defs = [] def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2896/src.py", line 98, in <module> E test_locale_german() E File "/tmp/buildbot-x86_64/usession-py3.12-2896/src.py", line 92, in test_locale_german E assert locale.format_string('%g', x, grouping=True) == '1234,57' E ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E AssertionError tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['_locale']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def test_locale_german(): import locale, sys for name in ['de_DE', 'de_DE.utf8']: try: locale.setlocale(locale.LC_NUMERIC, name) break except locale.Error: pass else: skip("no german locale") x = 1234.567890 try: if sys.platform != "darwin": assert locale.format_string('%g', x, grouping=True) == '1.234,57' assert format(x, 'n') == '1.234,57' assert format(12345678901234, 'n') == '12.345.678.901.234' else: # No thousands separator on German in MacOS since 10.4 assert locale.format_string('%g', x, grouping=True) == '1234,57' assert format(x, 'n') == '1234,57' assert format(12345678901234, 'n') == '12345678901234' finally: locale.setlocale(locale.LC_NUMERIC, 'C') try: test_locale_german() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2896/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2896/src.py", line 98, in <module> test_locale_german() File "/tmp/buildbot-x86_64/usession-py3.12-2896/src.py", line 92, in test_locale_german assert locale.format_string('%g', x, grouping=True) == '1234,57' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AssertionError =========================== short test summary info ============================ FAIL objspace/std/test/test_newformat.py::AppTestFloatFormatting::()::test_locale_german ============== 1 failed, 990 passed, 349 skipped in 87.22 seconds ============== ++ 10:09:48 starting module/__builtin__/test [6 started in total] __ module/__builtin__/test [6 done in total, somefailed=False] ________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 282 items module/__builtin__/test/test_abstractinst.py ........... module/__builtin__/test/test_breakpoint.py ........ module/__builtin__/test/test_builtin.py ....................................................................... module/__builtin__/test/test_construct_singletons.py . module/__builtin__/test/test_descriptor.py ................................... module/__builtin__/test/test_dir.py ........... module/__builtin__/test/test_filter.py ........ module/__builtin__/test/test_filter_pickle.py ..... module/__builtin__/test/test_format.py . module/__builtin__/test/test_functional.py ....................................................................................... module/__builtin__/test/test_map_pickle.py ... module/__builtin__/test/test_minmax.py ....................... module/__builtin__/test/test_rawinput.py .. module/__builtin__/test/test_sum.py . module/__builtin__/test/test_vars.py ... module/__builtin__/test/test_zip.py ........... module/__builtin__/test/test_zip_pickle.py . ========================= 282 passed in 23.50 seconds ========================== ++ 10:10:16 starting module/__pypy__/test [7 started in total] __ module/__pypy__/test [7 done in total, somefailed=False] ___________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 75 items module/__pypy__/test/test_builders.py ..... module/__pypy__/test/test_bytebuffer.py ... module/__pypy__/test/test_debug.py sssssss module/__pypy__/test/test_identitydict.py ...... module/__pypy__/test/test_intop.py ........... module/__pypy__/test/test_locals2fast.py ..... module/__pypy__/test/test_magic.py .......s.. module/__pypy__/test/test_newmemoryview.py ........ module/__pypy__/test/test_os.py . module/__pypy__/test/test_signal.py ..... module/__pypy__/test/test_special.py sssssssssss..s ==================== 55 passed, 20 skipped in 11.03 seconds ==================== ++ 10:10:31 starting module/_abc/test [8 started in total] __ module/_abc/test [8 done in total, somefailed=False] _______________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 3 items module/_abc/test/test_abc.py ... =========================== 3 passed in 0.28 seconds =========================== ++ 10:10:33 starting module/_ast/test [9 started in total] __ module/_ast/test [9 done in total, somefailed=False] _______________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 54 items module/_ast/test/test_ast.py ...................................................... ========================== 54 passed in 5.24 seconds =========================== ++ 10:10:42 starting module/_cffi_backend/test [10 started in total] __ module/_cffi_backend/test [10 done in total, somefailed=True] ______________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 443 items module/_cffi_backend/test/test_c.py sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss module/_cffi_backend/test/test_fastpath.py .................. module/_cffi_backend/test/test_ffi_obj.py ...............................F............. module/_cffi_backend/test/test_re_python.py .................... module/_cffi_backend/test/test_recompiler.py ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss module/_cffi_backend/test/test_unicode_literals.py ....... =================================== FAILURES =================================== ____________________ AppTestFFIObj.test_ffi_new_allocator_1 ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b...ertionError("cannot seem to get an int[10] not " AssertionError: cannot seem to get an int[10] not completely cleared > func = <function <lambda> at 0x00007ff249b9ff88>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_ffi_new_allocator_1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_ffi_new_allocator_1'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007ff2688d8640> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_ffi_new_allocator_1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_ffi_new_allocator_1'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_ffi_new_allocator_1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_ffi_new_allocator_1'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_ffi_new_allocator_1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007ff2381dd7e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...llocator_1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007ff2381cd360> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007ff2381cd360> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...llocator_1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_ffi_new_allocator_1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_ffi_new_allocator_1'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_ffi_new_allocator_1'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_ffi_new_allocator_1 at 0x00007ff26933c980> usemodules = ['_cffi_backend', 'array'], definitions = {}, defs = [] def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2901/src.py", line 96, in <module> E test_ffi_new_allocator_1() E File "/tmp/buildbot-x86_64/usession-py3.12-2901/src.py", line 93, in test_ffi_new_allocator_1 E raise AssertionError("cannot seem to get an int[10] not " E AssertionError: cannot seem to get an int[10] not completely cleared tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['_cffi_backend', 'array']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def test_ffi_new_allocator_1(): import _cffi_backend as _cffi1_backend ffi = _cffi1_backend.FFI() alloc1 = ffi.new_allocator() alloc2 = ffi.new_allocator(should_clear_after_alloc=False) for retry in range(100): p1 = alloc1("int[10]") p2 = alloc2("int[10]") combination = 0 for i in range(10): assert p1[i] == 0 combination |= p2[i] p1[i] = -42 p2[i] = -43 if combination != 0: break del p1, p2 import gc; gc.collect() else: raise AssertionError("cannot seem to get an int[10] not " "completely cleared") try: test_ffi_new_allocator_1() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2901/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2901/src.py", line 96, in <module> test_ffi_new_allocator_1() File "/tmp/buildbot-x86_64/usession-py3.12-2901/src.py", line 93, in test_ffi_new_allocator_1 raise AssertionError("cannot seem to get an int[10] not " AssertionError: cannot seem to get an int[10] not completely cleared =========================== short test summary info ============================ FAIL module/_cffi_backend/test/test_ffi_obj.py::AppTestFFIObj::()::test_ffi_new_allocator_1 ============== 1 failed, 89 passed, 353 skipped in 12.82 seconds =============== ++ 10:10:59 starting module/_codecs/test [11 started in total] __ module/_codecs/test [11 done in total, somefailed=False] ___________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 89 items module/_codecs/test/test_codecs.py ....................sss.................................................................. ===================== 86 passed, 3 skipped in 7.70 seconds ===================== ++ 10:11:09 starting module/_collections/test [12 started in total] __ module/_collections/test [12 done in total, somefailed=False] ______________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.01 seconds ========================= ++ 10:11:12 starting module/_continuation/test [13 started in total] __ module/_continuation/test [13 done in total, somefailed=False] _____________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 72 items / 2 skipped module/_continuation/test/test_generator.py .... module/_continuation/test/test_greenlet.py ............................ module/_continuation/test/test_stacklet.py ........................................ ===================== 72 passed, 2 skipped in 7.75 seconds ===================== ++ 10:11:22 starting module/_cppyy/test [14 started in total] __ module/_cppyy/test [14 done in total, somefailed=False] ____________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.02 seconds ========================= ++ 10:11:25 starting module/_csv/test [15 started in total] __ module/_csv/test [15 done in total, somefailed=False] ______________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 27 items module/_csv/test/test_dialect.py .............. module/_csv/test/test_reader.py ............. ========================== 27 passed in 2.35 seconds =========================== ++ 10:11:30 starting module/_demo/test [16 started in total] __ module/_demo/test [16 done in total, somefailed=False] _____________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 1 items module/_demo/test/test_sieve.py s ========================== 1 skipped in 0.12 seconds =========================== ++ 10:11:33 starting module/_hpy_universal/test/_vendored [17 started in total] __ module/_hpy_universal/test/_vendored [17 done in total, somefailed=False] __ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.02 seconds ========================= ++ 10:11:35 starting module/_hpy_universal/test/pypy [18 started in total] __ module/_hpy_universal/test/pypy [18 done in total, somefailed=False] _______ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.01 seconds ========================= ++ 10:11:38 starting module/_io/test [19 started in total] __ module/_io/test [19 done in total, somefailed=False] _______________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 134 items / 1 skipped module/_io/test/test_bufferedio.py .................................................s..................................................... module/_io/test/test_fileio.py ............................... ==================== 133 passed, 2 skipped in 12.96 seconds ==================== ++ 10:11:55 starting module/_jitlog/test [20 started in total] __ module/_jitlog/test [20 done in total, somefailed=False] ___________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 1 items module/_jitlog/test/test__jitlog.py . =========================== 1 passed in 0.14 seconds =========================== ++ 10:11:58 starting module/_locale/test [21 started in total] __ module/_locale/test [21 done in total, somefailed=False] ___________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 15 items module/_locale/test/test_locale.py ssssssssssssss. ===================== 1 passed, 14 skipped in 0.16 seconds ===================== ++ 10:12:00 starting module/_lsprof/test [22 started in total] __ module/_lsprof/test [22 done in total, somefailed=False] ___________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 6 items module/_lsprof/test/test_cprofile.py ...... =========================== 6 passed in 1.53 seconds =========================== ++ 10:12:05 starting module/_md5/test [23 started in total] __ module/_md5/test [23 done in total, somefailed=False] ______________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 8 items module/_md5/test/test_md5.py ........ =========================== 8 passed in 0.68 seconds =========================== ++ 10:12:08 starting module/_minimal_curses/test [24 started in total] __ module/_minimal_curses/test [24 done in total, somefailed=False] ___________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.01 seconds ========================= ++ 10:12:11 starting module/_multibytecodec/test [25 started in total] __ module/_multibytecodec/test [25 done in total, somefailed=False] ___________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 3 items module/_multibytecodec/test/test_multibtye_codecs.py ... =========================== 3 passed in 0.36 seconds =========================== ++ 10:12:14 starting module/_multiprocessing/test [26 started in total] __ module/_multiprocessing/test [26 done in total, somefailed=False] __________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 10 items module/_multiprocessing/test/test_semaphore.py ..sssss.s module/_multiprocessing/test/test_win32.py s ===================== 3 passed, 7 skipped in 1.16 seconds ====================== ++ 10:12:18 starting module/_opcode/test [27 started in total] __ module/_opcode/test [27 done in total, somefailed=False] ___________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.00 seconds ========================= ++ 10:12:20 starting module/_pickle/test [28 started in total] __ module/_pickle/test [28 done in total, somefailed=False] ___________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.01 seconds ========================= ++ 10:12:23 starting module/_pickle_support/test [29 started in total] __ module/_pickle_support/test [29 done in total, somefailed=False] ___________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.00 seconds ========================= ++ 10:12:25 starting module/_posixsubprocess/test [30 started in total] __ module/_posixsubprocess/test [30 done in total, somefailed=False] __________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.85 seconds ========================= ++ 10:12:29 starting module/_pypyjson/test [31 started in total] __ module/_pypyjson/test [31 done in total, somefailed=False] _________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 29 items module/_pypyjson/test/test__pypyjson.py ............................. ========================== 29 passed in 2.48 seconds =========================== ++ 10:12:34 starting module/_random/test [32 started in total] __ module/_random/test [32 done in total, somefailed=False] ___________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 12 items module/_random/test/test_random.py ............ ========================== 12 passed in 1.87 seconds =========================== ++ 10:12:39 starting module/_rawffi/alt/test [33 started in total] __ module/_rawffi/alt/test [33 done in total, somefailed=False] _______________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 61 items module/_rawffi/alt/test/test_ffitype.py ..... module/_rawffi/alt/test/test_funcptr.py ....ss.................................... module/_rawffi/alt/test/test_struct.py .............. ===================== 59 passed, 2 skipped in 6.97 seconds ===================== ++ 10:12:49 starting module/_rawffi/test [34 started in total] __ module/_rawffi/test [34 done in total, somefailed=True] ____________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 80 items module/_rawffi/test/test__rawffi.py ..F................................................................... module/_rawffi/test/test_exit.py . module/_rawffi/test/test_nested.py ...... module/_rawffi/test/test_tracker.py sss =================================== FAILURES =================================== __________________ AppTestFfi.test_libload_fail_nonutf8_name ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b...8_name assert re.search(r'missing.*?\.so', str(e)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AssertionError > func = <function <lambda> at 0x00007fad18129b50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_libload_fail_nonutf8_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_libload_fail_nonutf8_name'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fad488da5d0> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_libload_fail_nonutf8_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_libload_fail_nonutf8_name'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_libload_fail_nonutf8_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_libload_fail_nonutf8_name'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_libload_fail_nonutf8_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fad1816e660> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...nutf8_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fad1817a860> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fad1817a860> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...nutf8_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_libload_fail_nonutf8_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_libload_fail_nonutf8_name'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_libload_fail_nonutf8_name'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_libload_fail_nonutf8_name at 0x00007fad3bb37c40> usemodules = ['_rawffi', '_struct'] definitions = {'float_typemap': u'fd', 'is64bit': True, 'iswin32': False, 'lib_name': u'/tmp/buildbot-x86_64/usession-py3.12-2925/test__rawffi/x.dylib', ...} defs = ["self.float_typemap = 'fd'\n", 'self.is64bit = True\n', 'self.iswin32 = False\n', "self.lib_name = '/tmp/buildbot-x86...3.12-2925/test__rawffi/x.dylib'\n", "self.libc_name = '/usr/lib/libc.dylib'\n", "self.libm_name = 'libm.dylib'\n", ...] symbol = 'sizes_and_alignments' value = {u'?': (1L, 1L), u'B': (1L, 1L), u'H': (2L, 2L), u'I': (4L, 4L), ...} def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2925/src.py", line 96, in test_libload_fail_nonutf8_name E _rawffi.CDLL(b'missing\xff.so') E ^^^^ E OSError: Cannot load library missing\uxFF: dlopen(missing\uxFF E E During handling of the above exception, another exception occurred: E E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2925/src.py", line 103, in <module> E test_libload_fail_nonutf8_name() E File "/tmp/buildbot-x86_64/usession-py3.12-2925/src.py", line 99, in test_libload_fail_nonutf8_name E assert re.search(r'missing.*?\.so', str(e)) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E AssertionError tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['_rawffi', '_struct']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() self.float_typemap = 'fd' self.is64bit = True self.iswin32 = False self.lib_name = '/tmp/buildbot-x86_64/usession-py3.12-2925/test__rawffi/x.dylib' self.libc_name = '/usr/lib/libc.dylib' self.libm_name = 'libm.dylib' self.platform = 'darwin_x86_64' self.runappdirect = True self.sizes_and_alignments = {'c': (1, 1,), 'b': (1, 1,), 'B': (1, 1,), 'h': (2, 2,), 'u': (4, 4,), 'H': (2, 2,), 'i': (4, 4,), 'I': (4, 4,), 'l': (8, 8,), 'L': (8, 8,), 'q': (8, 8,), 'Q': (8, 8,), 'f': (4, 4,), 'd': (8, 8,), 'g': (16, 16,), 's': (8, 8,), 'P': (8, 8,), 'z': (8, 8,), 'O': (8, 8,), 'Z': (8, 8,), '?': (1, 1,), 'v': (2, 2,)} def test_libload_fail_nonutf8_name(): import _rawffi, re # a non-UTF8 filename must still produce a usable (matchable) message, # not a mangled/invalid-utf8 string try: _rawffi.CDLL(b'missing\xff.so') except OSError as e: print(e) assert re.search(r'missing.*?\.so', str(e)) else: raise AssertionError("did not fail??") try: test_libload_fail_nonutf8_name() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2925/src.py Cannot load library missing\uxFF: dlopen(missing\uxFF ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2925/src.py", line 96, in test_libload_fail_nonutf8_name _rawffi.CDLL(b'missing\xff.so') ^^^^ OSError: Cannot load library missing\uxFF: dlopen(missing\uxFF During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2925/src.py", line 103, in <module> test_libload_fail_nonutf8_name() File "/tmp/buildbot-x86_64/usession-py3.12-2925/src.py", line 99, in test_libload_fail_nonutf8_name assert re.search(r'missing.*?\.so', str(e)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AssertionError =========================== short test summary info ============================ FAIL module/_rawffi/test/test__rawffi.py::AppTestFfi::()::test_libload_fail_nonutf8_name ================ 1 failed, 76 passed, 3 skipped in 8.43 seconds ================ ++ 10:13:01 starting module/_socket/test [35 started in total] __ module/_socket/test [35 done in total, somefailed=False] ___________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.21 seconds ========================= ++ 10:13:04 starting module/_sre/test [36 started in total] __ module/_sre/test [36 done in total, somefailed=False] ______________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 94 items module/_sre/test/test_app_sre.py ..............................ssssssssssssssssssssssssssssssssssss module/_sre/test/test_sre_buf.py ............................ ==================== 58 passed, 36 skipped in 7.01 seconds ===================== ++ 10:13:14 starting module/_vmprof/test [37 started in total] __ module/_vmprof/test [37 done in total, somefailed=False] ___________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 5 items module/_vmprof/test/test__vmprof.py ..... =========================== 5 passed in 1.87 seconds =========================== ++ 10:13:18 starting module/_warnings/test [38 started in total] __ module/_warnings/test [38 done in total, somefailed=False] _________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.01 seconds ========================= ++ 10:13:21 starting module/_weakref/test [39 started in total] __ module/_weakref/test [39 done in total, somefailed=False] __________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.00 seconds ========================= ++ 10:13:24 starting module/_winreg/test [40 started in total] __ module/_winreg/test [40 done in total, somefailed=False] ___________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items / 1 skipped ========================== 1 skipped in 0.07 seconds =========================== ++ 10:13:26 starting module/array/test [41 started in total] __ module/array/test [41 done in total, somefailed=False] _____________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 60 items module/array/test/test_array.py ............................................................ ========================== 60 passed in 5.28 seconds =========================== ++ 10:13:35 starting module/atexit/test [42 started in total] __ module/atexit/test [42 done in total, somefailed=False] ____________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 0 items ========================= no tests ran in 0.00 seconds ========================= ++ 10:13:37 starting module/binascii/test [43 started in total] __ module/binascii/test [43 done in total, somefailed=False] __________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 18 items module/binascii/test/test_binascii.py .................. ========================== 18 passed in 1.74 seconds =========================== ++ 10:13:42 starting module/bz2/test [44 started in total] __ module/bz2/test [44 done in total, somefailed=False] _______________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 45 items module/bz2/test/test_bz2_compdecomp.py ssssssssssssssss module/bz2/test/test_bz2_file.py ssssssssssssssssssssssssssss module/bz2/test/test_large.py s ========================== 45 skipped in 3.97 seconds ========================== ++ 10:13:48 starting module/cmath/test [45 started in total] __ module/cmath/test [45 done in total, somefailed=False] _____________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 16 items module/cmath/test/test_cmath.py ................ ========================== 16 passed in 1.37 seconds =========================== ++ 10:13:53 starting module/cpyext/test [46 started in total] __ module/cpyext/test [46 done in total, somefailed=True] _____________________ /Users/matti/oss/pypy-x86_64-buildbot/site-packages/hypothesis/extra/pytestplugin.py:61: HypothesisWarning: You are using Pytest version 2.9.2. Hypothesis tests work with any test runner, but our Pytest plugin requires Pytest 4.3 or newer. Note that the Pytest developers no longer support this version either! Disabling the Hypothesis pytest plugin... warnings.warn(PYTEST_TOO_OLD_MESSAGE % (pytest.__version__,), HypothesisWarning) ============================= test session starts ============================== platform darwin -- Python 2.7.18[pypy-7.3.17-final], pytest-2.9.2, py-1.4.29, pluggy-0.3.1 pytest-2.9.2 from /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pytest.pyc rootdir: /Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build, inifile: pytest.ini plugins: hypothesis-4.57.1 collected 456 items / 1 skipped module/cpyext/test/test_arraymodule.py FFFFFFFFFFxFFFFFFF module/cpyext/test/test_async_iter.py sss module/cpyext/test/test_boolobject.py FFF module/cpyext/test/test_borrow.py FFF module/cpyext/test/test_buffer.py FFFFFF module/cpyext/test/test_bytearrayobject.py FFFFFF module/cpyext/test/test_bytesobject.py FFFFFFFFF module/cpyext/test/test_capsule.py FFF module/cpyext/test/test_cell.py F module/cpyext/test/test_classobject.py FF module/cpyext/test/test_codecs.py F module/cpyext/test/test_complexobject.py FFFFF module/cpyext/test/test_contextvars.py F module/cpyext/test/test_cpyext.py ..FFFFFFFFFFFFF.FFFFFFFFF module/cpyext/test/test_datetime.py FFFFFFF module/cpyext/test/test_dictobject.py FFFFFFFFFFF module/cpyext/test/test_eval.py FFFFFFFxFFF module/cpyext/test/test_exception.py FF module/cpyext/test/test_fileobject.py F module/cpyext/test/test_floatobject.py FFFFFFFFFFFF module/cpyext/test/test_frameobject.py FFFFF module/cpyext/test/test_funcobject.py FFFFFFF module/cpyext/test/test_genobject.py FF module/cpyext/test/test_getargs.py FFFFFFFFFFFFFFFF module/cpyext/test/test_import.py FF module/cpyext/test/test_iterator.py FF module/cpyext/test/test_listobject.py FFFFF module/cpyext/test/test_longobject.py FFFFFFFFFFFFFFF module/cpyext/test/test_marshal.py FF module/cpyext/test/test_memoryobject.py FsFFFFFFFFF module/cpyext/test/test_methodobject.py FFFFFFFFFFFFFF module/cpyext/test/test_misc.py F module/cpyext/test/test_module.py FFFFFFFFFFFFFFFFFFFFFFF module/cpyext/test/test_namespaceobject.py F module/cpyext/test/test_number.py FFF module/cpyext/test/test_object.py FFFFFFFFF.FFFFFFFFFF module/cpyext/test/test_pyerrors.py FFFFFFFFFFFFFFFsFFFFFFFFF module/cpyext/test/test_pymem.py F module/cpyext/test/test_pysignals.py F module/cpyext/test/test_pystate.py FFFFxFFFFFFF module/cpyext/test/test_pystrhex.py F module/cpyext/test/test_pystrtod.py F module/cpyext/test/test_sequence.py FFFF module/cpyext/test/test_setobject.py F module/cpyext/test/test_sliceobject.py FFFFFF module/cpyext/test/test_structseq.py F module/cpyext/test/test_sysmodule.py FFF module/cpyext/test/test_thread.py xFFFxF module/cpyext/test/test_tupleobject.py FFFFF module/cpyext/test/test_typeobject.py FFFFFFFFFFFFFF.FFFF.FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.FFFFFFFFFFFFFF module/cpyext/test/test_unicodeobject.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF module/cpyext/test/test_userslots.py FFFF module/cpyext/test/test_version.py FF module/cpyext/test/test_weakref.py FF =================================== FAILURES =================================== ________________________ AppTestArrayModule.test_basic _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_basic'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_basic'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_basic'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b2167a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a8159a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a8159a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_basic'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_basic'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_basic at 0x00007fdd7b02a368> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd6a817d38>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a859600> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> E test_basic() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_basic E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_basic(): module = self.import_module(name='array') import sys arr = module.array('i', [1,2,3]) assert arr.typecode == 'i' assert arr.itemsize == 4 assert arr[2] == 3 assert len(arr.buffer_info()) == 2 exc = raises(TypeError, module.array.append) errstr = str(exc.value) if sys.implementation.name == 'pypy': assert errstr.startswith("descriptor 'append' of 'array' object"), errstr else: assert errstr.startswith("unbound method array.append"), errstr arr.append(4) assert arr.tolist() == [1, 2, 3, 4] assert len(arr) == 4 try: test_basic() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> test_basic() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_basic module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestArrayModule.test_iter _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd590762f0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iter'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iter'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iter'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50d11b00> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ad847e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ad847e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_iter'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_iter'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_iter at 0x00007fdd7b02a3e0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd50f9c138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7add1210> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in <module> E test_iter() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_iter E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_iter(): module = self.import_module(name='array') arr = module.array('i', [1,2,3]) sum = 0 for i in arr: sum += i assert sum == 6 try: test_iter() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in <module> test_iter() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_iter module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestArrayModule.test_index _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a8212e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_index'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_index'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_index'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ad12160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ad4e0a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ad4e0a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_index'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_index'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_index at 0x00007fdd7b02a458> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd6ad74170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ad741e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_index() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_index E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_index(): module = self.import_module(name='array') arr = module.array('i', [1, 2, 3, 4]) assert arr[3] == 4 raises(IndexError, arr.__getitem__, 10) del arr[2] assert arr.tolist() == [1, 2, 4] arr[2] = 99 assert arr.tolist() == [1, 2, 99] try: test_index() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_index() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_index module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestArrayModule.test_slice_get _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a9bc020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slice_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slice_get'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slice_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slice_get'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slice_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slice_get'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slice_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508ac160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._slice_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aa083a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aa083a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._slice_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slice_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_slice_get'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_slice_get'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_slice_get at 0x00007fdd7b02a4d0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd7aa2e138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7aa2e1a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in <module> E test_slice_get() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_slice_get E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_slice_get(): module = self.import_module(name='array') arr = module.array('i', [1, 2, 3, 4]) assert arr[:].tolist() == [1, 2, 3, 4] assert arr[1:].tolist() == [2, 3, 4] assert arr[:2].tolist() == [1, 2] assert arr[1:3].tolist() == [2, 3] try: test_slice_get() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in <module> test_slice_get() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_slice_get module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestArrayModule.test_slice_object _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd595615b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slice_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slice_object'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slice_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slice_object'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slice_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slice_object'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slice_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a78cc78> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ice_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a7ea2e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a7ea2e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ice_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slice_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_slice_object'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_slice_object'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_slice_object at 0x00007fdd7b02a548> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd58de1b40>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58de1bb0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_slice_object() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_slice_object E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_slice_object(): module = self.import_module(name='array') arr = module.array('i', [1, 2, 3, 4]) assert arr[slice(1, 3)].tolist() == [2,3] arr[slice(1, 3)] = module.array('i', [21, 22, 23]) assert arr.tolist() == [1, 21, 22, 23, 4] del arr[slice(1, 3)] assert arr.tolist() == [1, 23, 4] raises(TypeError, 'arr[slice(1, 3)] = "abc"') try: test_slice_object() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_slice_object() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_slice_object module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestArrayModule.test_buffer ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd590762f0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_buffer'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_buffer'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_buffer'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50c84e08> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aa34720> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aa34720> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_buffer'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_buffer'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_buffer at 0x00007fdd7b02a5c0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd7aba0598>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7aba0608> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> E test_buffer() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_buffer E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_buffer(): import sys module = self.import_module(name='array') arr = module.array('i', [1, 2, 3, 4]) buf = memoryview(arr) buf[1] = 2 if sys.byteorder == 'big': expected = b'\0\0\0\x01\0\0\0\x02\0\0\0\x03\0\0\0\x04' else: expected = b'\x01\0\0\0\x02\0\0\0\x03\0\0\0\x04\0\0\0' assert bytes(buf) == expected # make sure memory_attach is called buf2 = module.passthrough(buf) assert str(buf2) == str(buf) try: test_buffer() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> test_buffer() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_buffer module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestArrayModule.test_releasebuffer _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51672d40>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_releasebuffer'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_releasebuffer'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_releasebuffer'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac28138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...easebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd516b0020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd516b0020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...easebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_releasebuffer'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_releasebuffer'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_releasebuffer at 0x00007fdd7b02a638> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd6a562138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a5621a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in <module> E test_releasebuffer() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_releasebuffer E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_releasebuffer(): module = self.import_module(name='array') arr = module.array('i', [1,2,3,4]) initial = module.get_releasebuffer_cnt() module.create_and_release_buffer(arr) assert module.get_releasebuffer_cnt() == initial + 1 try: test_releasebuffer() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in <module> test_releasebuffer() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_releasebuffer module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestArrayModule.test_Py_buffer _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7952b358>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_buffer'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_buffer'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_buffer'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508dc750> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._Py_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79c8b760> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79c8b760> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._Py_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_Py_buffer'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_Py_buffer'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_Py_buffer at 0x00007fdd7b02a6b0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd798185d0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7adc7670> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_Py_buffer() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_Py_buffer E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_Py_buffer(): module = self.import_module(name='array') arr = module.array('i', [1,2,3,4]) initial = module.get_releasebuffer_cnt() m = memoryview(arr) assert module.get_releasebuffer_cnt() == initial del m self.debug_collect() assert module.get_releasebuffer_cnt() == initial + 1 try: test_Py_buffer() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_Py_buffer() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_Py_buffer module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestArrayModule.test_0d_view ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd686b2890>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_0d_view'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_0d_view'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_0d_view'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_0d_view'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_0d_view'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_0d_view'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_0d_view'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac3e138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_0d_view'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5143c020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5143c020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_0d_view'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_0d_view'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_0d_view'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_0d_view'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_0d_view at 0x00007fdd7b02a728> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd7b172170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b1721e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in <module> E test_0d_view() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_0d_view E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_0d_view(): module = self.import_module(name='array') arr = module.array('B', b'\0\0\0\x01') buf = memoryview(arr).cast('i', shape=()) assert bytes(buf) == b'\0\0\0\x01' assert buf.shape == () assert buf.strides == () try: test_0d_view() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in <module> test_0d_view() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_0d_view module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestArrayModule.test_binop_mul_impl ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b2ec3e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_binop_mul_impl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_binop_mul_impl'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_binop_mul_impl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_binop_mul_impl'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_binop_mul_impl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_binop_mul_impl'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_binop_mul_impl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50c975b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...p_mul_impl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69ea9920> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69ea9920> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...p_mul_impl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_binop_mul_impl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_binop_mul_impl'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_binop_mul_impl'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_binop_mul_impl at 0x00007fdd7b02a7a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd69f446b0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69f44720> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in <module> E test_binop_mul_impl() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_binop_mul_impl E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_binop_mul_impl(): # check that rmul is called module = self.import_module(name='array') arr = module.array('i', [2]) res = [1, 2, 3] * arr assert res == [1, 2, 3, 1, 2, 3] try: test_binop_mul_impl() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in <module> test_binop_mul_impl() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_binop_mul_impl module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestArrayModule.test_string_buf ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7a9e0818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_string_buf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_string_buf'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_string_buf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_string_buf'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_string_buf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_string_buf'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_string_buf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d68138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...string_buf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69fce0a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69fce0a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...string_buf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_string_buf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_string_buf'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_string_buf'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_string_buf at 0x00007fdd7b02a890> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd69fbc1a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69fbc218> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> E test_string_buf() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_string_buf E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_string_buf(): module = self.import_module(name='array') import sys arr = module.array('u', '123') view = memoryview(arr) print("view.shape", view.shape) print("view.strides", view.strides) isize = view.itemsize if sys.platform == 'win32': assert isize == 2 else: assert isize == 4 assert module.write_buffer_len(arr) == isize * 3 assert len(module.readbuffer_as_string(arr)) == isize * 3 assert len(module.readbuffer_as_string(view)) == isize * 3 try: test_string_buf() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> test_string_buf() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_string_buf module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestArrayModule.test_subclass _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd513cd088>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_subclass'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_subclass'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_subclass'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac7e138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd51404020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd51404020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_subclass'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_subclass'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_subclass at 0x00007fdd7b02a908> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd6acf2138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6acf21a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> E test_subclass() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_subclass E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_subclass(): import struct module = self.import_module(name='array') class Sub(module.array): pass arr = Sub('i', [2]) res = [1, 2, 3] * arr assert res == [1, 2, 3, 1, 2, 3] val = module.readbuffer_as_string(arr) assert val == struct.pack('i', 2) try: test_subclass() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> test_subclass() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_subclass module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestArrayModule.test_unicode_readbuffer __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b2ec3e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_unicode_readbuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unicode_readbuffer'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_unicode_readbuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unicode_readbuffer'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_unicode_readbuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unicode_readbuffer'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_unicode_readbuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508add08> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...readbuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd693aa720> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd693aa720> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...readbuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_unicode_readbuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_unicode_readbuffer'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unicode_readbuffer'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_unicode_readbuffer at 0x00007fdd7b02a980> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd688f79b8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd688f7a28> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in <module> E test_unicode_readbuffer() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_unicode_readbuffer E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_unicode_readbuffer(): # Not really part of array, refactor import struct module = self.import_module(name='array') val = module.readbuffer_as_string(b'abcd') assert val == b'abcd' try: test_unicode_readbuffer() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in <module> test_unicode_readbuffer() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_unicode_readbuffer module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestArrayModule.test_readinto _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd68787d30>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_readinto'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_readinto'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_readinto'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_readinto'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_readinto'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_readinto'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_readinto'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd506bb858> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_readinto'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd595dd220> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd595dd220> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_readinto'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_readinto'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_readinto'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_readinto'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_readinto at 0x00007fdd7b02a9f8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd6a5acf38>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a9881e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> E test_readinto() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_readinto E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_readinto(): module = self.import_module(name='array') a = module.array('B') a.fromstring(b'0123456789') filename = self.udir + "/_test_file" f = open(filename, 'w+b') f.write(b'foobar') f.seek(0) n = f.readinto(a) f.close() assert n == 6 assert len(a) == 10 assert a.tostring() == b'foobar6789' try: test_readinto() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> test_readinto() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_readinto module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestArrayModule.test_iowrite ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6932d5b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iowrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iowrite'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iowrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iowrite'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iowrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iowrite'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iowrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d55a10> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_iowrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69aab120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69aab120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_iowrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iowrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_iowrite'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_iowrite'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_iowrite at 0x00007fdd7b02aa70> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd69f78c98>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69f78d08> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> E test_iowrite() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_iowrite E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_iowrite(): module = self.import_module(name='array') from io import BytesIO a = module.array('B') a.fromstring(b'0123456789') fd = BytesIO() # only test that it works fd.write(a) try: test_iowrite() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> test_iowrite() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_iowrite module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________ AppTestArrayModule.test_getitem_via_PySequence_GetItem ____________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51372020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_via_PySequence_GetItem'...all__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getitem_via_PySequence_GetItem'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_via_PySequence_GetItem'...all__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getitem_via_PySequence_GetItem'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_via_PySequence_GetItem'...all__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getitem_via_PySequence_GetItem'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_via_PySequence_GetItem'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac29998> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ce_GetItem'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd592b69a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd592b69a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ce_GetItem'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_via_PySequence_GetItem'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_getitem_via_PySequence_GetItem'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_getitem_via_PySequence_GetItem'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_getitem_via_PySequence_GetItem at 0x00007fdd7b02aae8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd506330f8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd50633210> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> E test_getitem_via_PySequence_GetItem() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getitem_via_PySequence_GetItem E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_getitem_via_PySequence_GetItem(): module = self.import_module(name='array') a = module.array('i', range(10)) # call via tp_as_mapping.mp_subscript assert 5 == a[-5] # PySequence_ITEM used to call space.getitem() which # prefers tp_as_mapping.mp_subscript over tp_as_sequence.sq_item # Now fixed so this test raises (array_item does not add len(a), # array_subscr does) raises(IndexError, module.getitem, a, -5) try: test_getitem_via_PySequence_GetItem() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> test_getitem_via_PySequence_GetItem() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getitem_via_PySequence_GetItem module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________ AppTestArrayModule.test_subclass_with_attribute ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd69346098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclass_with_attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_subclass_with_attribute'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclass_with_attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_subclass_with_attribute'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclass_with_attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_subclass_with_attribute'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclass_with_attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50c840e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd692de9a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd692de9a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclass_with_attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_subclass_with_attribute'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_subclass_with_attribute'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_subclass_with_attribute at 0x00007fdd7b02ab60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestArrayModule.w_compile_module of <pypy.module.cpyext.test.test_arraymodule.AppT...w_import_extension of <pypy.module.cpyext.test.test_arraymodule.AppTestArrayModule object at 0x00007fdd69fba170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69fba1e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_subclass_with_attribute() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_subclass_with_attribute E module = self.import_module(name='array') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_subclass_with_attribute(): module = self.import_module(name='array') class Sub(module.array): def addattrib(self): print('called addattrib') self.attrib = True import gc module.subclass_with_attribute(Sub, "addattrib", "attrib", gc.collect) assert Sub.__module__ == __name__ try: test_subclass_with_attribute() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_subclass_with_attribute() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_subclass_with_attribute module = self.import_module(name='array') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestBoolMacros.test_macros _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b2ec3e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macros'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macros'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macros'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5063d920> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ac82a20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ac82a20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_macros'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_macros'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_macros at 0x00007fdd7b02b790> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBoolMacros.w_compile_module of <pypy.module.cpyext.test.test_boolobject.AppTes...s.w_import_extension of <pypy.module.cpyext.test.test_boolobject.AppTestBoolMacros object at 0x00007fdd6abdcfe0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6aba8bb8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in <module> E test_macros() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_macros E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_macros(): module = self.import_extension('foo', [ ("get_true", "METH_NOARGS", "Py_RETURN_TRUE;"), ("get_false", "METH_NOARGS", "Py_RETURN_FALSE;"), ]) assert module.get_true() == True assert module.get_false() == False try: test_macros() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in <module> test_macros() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_macros module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestBoolMacros.test_toint _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58ac2a70>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_toint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_toint'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_toint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_toint'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_toint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_toint'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_toint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50c963e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_toint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69bacf60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69bacf60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_toint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_toint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_toint'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_toint'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_toint at 0x00007fdd7b02b718> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBoolMacros.w_compile_module of <pypy.module.cpyext.test.test_boolobject.AppTes...s.w_import_extension of <pypy.module.cpyext.test.test_boolobject.AppTestBoolMacros object at 0x00007fdd69fbc2f8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69fbc410> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> E test_toint() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_toint E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_toint(): module = self.import_extension('foo', [ ("to_int", "METH_O", ''' if (args->ob_type->tp_as_number && args->ob_type->tp_as_number->nb_int) { return args->ob_type->tp_as_number->nb_int(args); } else { PyErr_SetString(PyExc_TypeError,"cannot convert bool to int"); return NULL; } '''), ]) assert module.to_int(False) == 0 assert module.to_int(True) == 1 try: test_toint() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> test_toint() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_toint module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestBoolMacros.test_check _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aa44db8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_check'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_check'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_check'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b29c2f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd594e2d60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd594e2d60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_check'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_check'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_check at 0x00007fdd7b02b628> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBoolMacros.w_compile_module of <pypy.module.cpyext.test.test_boolobject.AppTes...s.w_import_extension of <pypy.module.cpyext.test.test_boolobject.AppTestBoolMacros object at 0x00007fdd59052170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd590521e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> E test_check() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_check E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_check(): module = self.import_extension('foo', [ ("type_check", "METH_O", ''' return PyLong_FromLong(PyBool_Check(args)); ''')]) assert module.type_check(True) assert module.type_check(False) assert not module.type_check(None) assert not module.type_check(1.0) try: test_check() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> test_check() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_check module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestBorrow.test_tuple_borrowing ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd50064db8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tuple_borrowing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_tuple_borrowing'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tuple_borrowing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_tuple_borrowing'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tuple_borrowing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_tuple_borrowing'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tuple_borrowing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5905c188> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._borrowing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aad0060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aad0060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._borrowing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tuple_borrowing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_tuple_borrowing'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_tuple_borrowing'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_tuple_borrowing at 0x00007fdd7b02b4c0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBorrow.w_compile_module of <pypy.module.cpyext.test.test_borrow.AppTestBorrow ...estBorrow.w_import_extension of <pypy.module.cpyext.test.test_borrow.AppTestBorrow object at 0x00007fdd69de74e8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69de76e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> E test_tuple_borrowing() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_tuple_borrowing E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_tuple_borrowing(): module = self.import_extension('foo', [ ("test_borrowing", "METH_NOARGS", """ PyObject *t = PyTuple_New(1); if (t == NULL) { return NULL; } PyObject *f = PyFloat_FromDouble(42.0); PyObject *g = NULL; printf("Refcnt1: %ld\\n", f->ob_refcnt); PyTuple_SetItem(t, 0, f); // steals reference printf("Refcnt2: %ld\\n", f->ob_refcnt); f = PyTuple_GetItem(t, 0); // borrows reference printf("Refcnt3: %ld\\n", f->ob_refcnt); g = PyTuple_GetItem(t, 0); // borrows reference again printf("Refcnt4: %ld\\n", f->ob_refcnt); printf("COMPARE: %i\\n", f == g); fflush(stdout); Py_DECREF(t); Py_RETURN_TRUE; """), ]) assert module.test_borrowing() # the test should not leak try: test_tuple_borrowing() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> test_tuple_borrowing() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_tuple_borrowing module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestBorrow.test_borrow_destroy _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a821538>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_borrow_destroy'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_borrow_destroy'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_borrow_destroy'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_borrow_destroy'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_borrow_destroy'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_borrow_destroy'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_borrow_destroy'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a6ce160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ow_destroy'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ac50060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ac50060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ow_destroy'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_borrow_destroy'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_borrow_destroy'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_borrow_destroy'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_borrow_destroy at 0x00007fdd7b02b538> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBorrow.w_compile_module of <pypy.module.cpyext.test.test_borrow.AppTestBorrow ...estBorrow.w_import_extension of <pypy.module.cpyext.test.test_borrow.AppTestBorrow object at 0x00007fdd6a99c138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a99c1a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> E test_borrow_destroy() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_borrow_destroy E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_borrow_destroy(): module = self.import_extension('foo', [ ("test_borrow_destroy", "METH_NOARGS", """ PyObject *i = PyLong_FromLong(42); PyObject *j; PyObject *t1 = PyTuple_Pack(1, i); if (t1 == NULL) { return NULL; } PyObject *t2 = PyTuple_Pack(1, i); if (t2 == NULL) { return NULL; } Py_DECREF(i); i = PyTuple_GetItem(t1, 0); PyTuple_GetItem(t2, 0); Py_DECREF(t2); j = PyLong_FromLong(PyLong_AsLong(i)); Py_DECREF(t1); return j; """), ]) assert module.test_borrow_destroy() == 42 try: test_borrow_destroy() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> test_borrow_destroy() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_borrow_destroy module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestBorrow.test_double_borrow _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd50468db8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_double_borrow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_double_borrow'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_double_borrow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_double_borrow'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_double_borrow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_double_borrow'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_double_borrow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50b9a278> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ble_borrow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aaf4b60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aaf4b60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ble_borrow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_double_borrow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_double_borrow'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_double_borrow'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_double_borrow at 0x00007fdd7b02b5b0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBorrow.w_compile_module of <pypy.module.cpyext.test.test_borrow.AppTestBorrow ...estBorrow.w_import_extension of <pypy.module.cpyext.test.test_borrow.AppTestBorrow object at 0x00007fdd69ef5be8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69ef5c58> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> E test_double_borrow() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_double_borrow E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_double_borrow(): module = self.import_extension('foo', [ ("run", "METH_NOARGS", """ PyObject *t = PyTuple_New(1); PyObject *s = PyRun_String("set()", Py_eval_input, Py_None, Py_None); PyObject *w = PyWeakref_NewRef(s, Py_None); PyTuple_SetItem(t, 0, s); PyTuple_GetItem(t, 0); PyTuple_GetItem(t, 0); Py_DECREF(t); return w; """), ]) wr = module.run() # check that the set() object was deallocated self.debug_collect() assert wr() is None try: test_double_borrow() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> test_double_borrow() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_double_borrow module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestBuffer.test_size_from_format ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6972c4d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_size_from_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_size_from_format'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_size_from_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_size_from_format'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_size_from_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_size_from_format'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_size_from_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b29c430> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...rom_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd595dc020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd595dc020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...rom_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_size_from_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_size_from_format'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_size_from_format'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_size_from_format at 0x00007fdd7b02b9e8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBuffer.w_compile_module of <pypy.module.cpyext.test.test_buffer.AppTestBuffer ...estBuffer.w_import_extension of <pypy.module.cpyext.test.test_buffer.AppTestBuffer object at 0x00007fdd50640598>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd50640838> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> E test_size_from_format() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_size_from_format E module = self.import_extension('buffer', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_size_from_format(): import struct module = self.import_extension('buffer', [ ('size_from_format', 'METH_VARARGS', """ const char *fmt; Py_ssize_t n; if (!PyArg_ParseTuple(args, "s", &fmt)) return NULL; n = PyBuffer_SizeFromFormat(fmt); if (n < 0) return NULL; return PyLong_FromSsize_t(n); """)]) assert module.size_from_format("i") == struct.calcsize("i") assert module.size_from_format("2i3d") == struct.calcsize("2i3d") try: test_size_from_format() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> test_size_from_format() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_size_from_format module = self.import_extension('buffer', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestBuffer.test_AsWriteBuffer _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a9bc020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsWriteBuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsWriteBuffer'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsWriteBuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsWriteBuffer'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsWriteBuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsWriteBuffer'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsWriteBuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d54188> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...riteBuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69c44060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69c44060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...riteBuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsWriteBuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_AsWriteBuffer'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_AsWriteBuffer'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_AsWriteBuffer at 0x00007fdd7b02ba60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBuffer.w_compile_module of <pypy.module.cpyext.test.test_buffer.AppTestBuffer ...estBuffer.w_import_extension of <pypy.module.cpyext.test.test_buffer.AppTestBuffer object at 0x00007fdd687de170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd687dfb78> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> E test_AsWriteBuffer() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_AsWriteBuffer E module = self.import_extension('buffer', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_AsWriteBuffer(): import array module = self.import_extension('buffer', [ ('write_buffer_len', 'METH_O', """ void* buf; Py_ssize_t buf_len; if (PyObject_AsWriteBuffer(args, &buf, &buf_len) < 0) { //PyErr_SetString(PyExc_ValueError, "bad value"); return NULL; } return PyLong_FromLong(buf_len); """)]) assert module.write_buffer_len(bytearray(b'123')) == 3 assert module.write_buffer_len(array.array('i', [1, 2, 3])) == 12 # import _cffi_backend BChar = _cffi_backend.new_primitive_type("char") BCharPtr = _cffi_backend.new_pointer_type(BChar) BCharArray = _cffi_backend.new_array_type(BCharPtr, None) p = _cffi_backend.newp(BCharArray, b"abcde") bb = _cffi_backend.buffer(p) assert module.write_buffer_len(bb) == 6 try: test_AsWriteBuffer() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> test_AsWriteBuffer() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_AsWriteBuffer module = self.import_extension('buffer', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestBuffer.test_mmap_buffer ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b366980>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_mmap_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_mmap_buffer'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_mmap_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_mmap_buffer'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_mmap_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_mmap_buffer'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_mmap_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a78c188> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...map_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5928e020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5928e020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...map_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_mmap_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_mmap_buffer'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_mmap_buffer'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_mmap_buffer at 0x00007fdd7b02bad8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBuffer.w_compile_module of <pypy.module.cpyext.test.test_buffer.AppTestBuffer ...estBuffer.w_import_extension of <pypy.module.cpyext.test.test_buffer.AppTestBuffer object at 0x00007fdd6a99c288>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a99c3a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_mmap_buffer() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_mmap_buffer E module = self.import_extension('mmap_buffer', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_mmap_buffer(): module = self.import_extension('mmap_buffer', [ ('isbuffer', 'METH_O', """ Py_buffer view; if (PyObject_GetBuffer(args, &view, PyBUF_ANY_CONTIGUOUS|PyBUF_WRITABLE) != 0) { return NULL; } return PyLong_FromLong(1); """)]) import os, mmap tmpname = os.path.join(self.udir, 'test_mmap_buffer') print(tmpname) with open(tmpname, 'w+b') as f: f.write(b'123') f.flush() m = mmap.mmap(f.fileno(), 3) assert module.isbuffer(m) == 1 try: test_mmap_buffer() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_mmap_buffer() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_mmap_buffer module = self.import_extension('mmap_buffer', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestBuffer.test_applevel __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6932d5b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_applevel'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_applevel'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_applevel'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_applevel'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_applevel'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_applevel'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_applevel'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd79568e80> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_applevel'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7acd00e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7acd00e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_applevel'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_applevel'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_applevel'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_applevel'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_applevel at 0x00007fdd7b02bb50> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBuffer.w_compile_module of <pypy.module.cpyext.test.test_buffer.AppTestBuffer ...estBuffer.w_import_extension of <pypy.module.cpyext.test.test_buffer.AppTestBuffer object at 0x00007fdd7ad002f8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ad00368> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_applevel() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_applevel E module = self.import_extension("foo", [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_applevel(): module = self.import_extension("foo", [ ("getbuffer", "METH_O", """ Py_buffer view; if (!PyObject_CheckBuffer(args)) { PyErr_SetString(PyExc_TypeError, "no buffer interface"); return NULL; } if (PyObject_GetBuffer(args, &view, PyBUF_SIMPLE) != 0) { return NULL; } PyObject *ret = view.obj; Py_INCREF(ret); PyBuffer_Release(&view); return ret; """)]) class B(): def __buffer__(self, flags): return memoryview(b'hello') ret = module.getbuffer(B()) assert ret == b'hello' try: test_applevel() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_applevel() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_applevel module = self.import_extension("foo", [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestBuffer.test_argparse __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd5037ebd8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_argparse'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_argparse'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_argparse'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_argparse'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_argparse'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_argparse'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_argparse'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac28a98> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_argparse'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd591de020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd591de020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_argparse'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_argparse'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_argparse'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_argparse'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_argparse at 0x00007fdd7b02bbc8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBuffer.w_compile_module of <pypy.module.cpyext.test.test_buffer.AppTestBuffer ...estBuffer.w_import_extension of <pypy.module.cpyext.test.test_buffer.AppTestBuffer object at 0x00007fdd6ac14fa8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ac15018> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> E test_argparse() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_argparse E module = self.import_extension("foo", [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_argparse(): # issue 5136 module = self.import_extension("foo", [ ("getbuffer", "METH_VARARGS", """ Py_buffer buf; if (!PyArg_ParseTuple(args, "y*", &buf)) return NULL; int ro = buf.readonly; PyBuffer_Release(&buf); return PyLong_FromLong(ro); """), ]) # buf = array.array("B", [0] * 1024) buf = bytearray(1024) # buf = (ctypes.c_uint8 * 1024)() ret = module.getbuffer(buf) for i in range(2000): assert ret == 0, "failed in iteration %d" % i try: test_argparse() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> test_argparse() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_argparse module = self.import_extension("foo", [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________ AppTestBuffer.test_bytearray_release_buffer_unlocks_resize __________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd513734c0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_release_buffer_unlock..._MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytearray_release_buffer_unlocks_resize'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_release_buffer_unlock..._MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytearray_release_buffer_unlocks_resize'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_release_buffer_unlock..._MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytearray_release_buffer_unlocks_resize'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_release_buffer_unlocks_resize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5904c4d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...cks_resize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79564920> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79564920> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...cks_resize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_release_buffer_unlocks_resize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_bytearray_release_buffer_unlocks_resize'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_bytearray_release_buffer_unlocks_resize'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_bytearray_release_buffer_unlocks_resize at 0x00007fdd7b02bc40> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBuffer.w_compile_module of <pypy.module.cpyext.test.test_buffer.AppTestBuffer ...estBuffer.w_import_extension of <pypy.module.cpyext.test.test_buffer.AppTestBuffer object at 0x00007fdd59002138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd590021a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 161, in <module> E test_bytearray_release_buffer_unlocks_resize() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_bytearray_release_buffer_unlocks_resize E module = self.import_extension("foo", [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_bytearray_release_buffer_unlocks_resize(): # Acquire and immediately release: bytearray must be resizable after. # Also verify that holding the buffer blocks resize until release. module = self.import_extension("foo", [ ("acquire_and_release", "METH_O", """ Py_buffer buf; if (PyObject_GetBuffer(args, &buf, PyBUF_SIMPLE) < 0) return NULL; PyBuffer_Release(&buf); Py_RETURN_NONE; """), ("acquire", "METH_O", """ Py_buffer *buf = (Py_buffer *)malloc(sizeof(Py_buffer)); if (PyObject_GetBuffer(args, buf, PyBUF_SIMPLE) < 0) { free(buf); return NULL; } return PyLong_FromVoidPtr(buf); """), ("release", "METH_O", """ Py_buffer *buf = (Py_buffer *)PyLong_AsVoidPtr(args); PyBuffer_Release(buf); free(buf); Py_RETURN_NONE; """), ]) b = bytearray(b'hello') module.acquire_and_release(b) b.append(ord('x')) assert b == bytearray(b'hellox') b2 = bytearray(b'world') token = module.acquire(b2) raises(BufferError, b2.append, ord('!')) module.release(token) b2.append(ord('!')) assert b2 == bytearray(b'world!') try: test_bytearray_release_buffer_unlocks_resize() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 161, in <module> test_bytearray_release_buffer_unlocks_resize() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_bytearray_release_buffer_unlocks_resize module = self.import_extension("foo", [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestStringObject.test_basic ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b366980>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_basic'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_basic'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_basic'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd506302f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5928e060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5928e060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_basic'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_basic'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_basic at 0x00007fdd7b02bf88> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestStringObject.w_compile_module of <pypy.module.cpyext.test.test_bytearrayobject...ort_extension of <pypy.module.cpyext.test.test_bytearrayobject.AppTestStringObject object at 0x00007fdd6a99c480>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a99d0c0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> E test_basic() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_basic E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_basic(): module = self.import_extension('foo', [ ("get_hello1", "METH_NOARGS", """ return PyByteArray_FromStringAndSize( "Hello world<should not be included>", 11); """), ("get_hello2", "METH_NOARGS", """ return PyByteArray_FromStringAndSize("Hello world", 12); """), ("test_Size", "METH_NOARGS", """ PyObject* s = PyByteArray_FromStringAndSize("Hello world", 12); int result = 0; if(PyByteArray_Size(s) == 12) { result = 1; } Py_DECREF(s); return PyBool_FromLong(result); """), ("test_is_bytearray", "METH_VARARGS", """ return PyBool_FromLong(PyByteArray_Check(PyTuple_GetItem(args, 0))); """)], prologue='#include <stdlib.h>') assert module.get_hello1() == b'Hello world' assert module.get_hello2() == b'Hello world\x00' assert module.test_Size() assert module.test_is_bytearray(bytearray(b"")) assert not module.test_is_bytearray(()) try: test_basic() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> test_basic() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_basic module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________ AppTestStringObject.test_bytearray_buffer_init ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd584ac818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_buffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytearray_buffer_init'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_buffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytearray_buffer_init'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_buffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytearray_buffer_init'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_buffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50c6a160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...uffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7abce120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7abce120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...uffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_buffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_bytearray_buffer_init'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_bytearray_buffer_init'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_bytearray_buffer_init at 0x00007fdd58742020> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestStringObject.w_compile_module of <pypy.module.cpyext.test.test_bytearrayobject...ort_extension of <pypy.module.cpyext.test.test_bytearrayobject.AppTestStringObject object at 0x00007fdd7abd0138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7abd01a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> E test_bytearray_buffer_init() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_bytearray_buffer_init E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_bytearray_buffer_init(): module = self.import_extension('foo', [ ("getbytearray", "METH_NOARGS", """ PyObject *s, *t; char* c; s = PyByteArray_FromStringAndSize(NULL, 4); if (s == NULL) return NULL; t = PyByteArray_FromStringAndSize(NULL, 3); if (t == NULL) return NULL; Py_DECREF(t); c = PyByteArray_AsString(s); if (c == NULL) { PyErr_SetString(PyExc_ValueError, "non-null bytearray object expected"); return NULL; } c[0] = 'a'; c[1] = 'b'; c[2] = 0; c[3] = 'c'; return s; """), ]) s = module.getbytearray() assert len(s) == 4 assert s == b'ab\x00c' try: test_bytearray_buffer_init() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> test_bytearray_buffer_init() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_bytearray_buffer_init module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestStringObject.test_bytearray_mutable __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd585c2188>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_mutable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytearray_mutable'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_mutable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytearray_mutable'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_mutable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytearray_mutable'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_mutable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5063c228> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ay_mutable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b312020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b312020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ay_mutable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_mutable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_bytearray_mutable'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_bytearray_mutable'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_bytearray_mutable at 0x00007fdd58742098> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestStringObject.w_compile_module of <pypy.module.cpyext.test.test_bytearrayobject...ort_extension of <pypy.module.cpyext.test.test_bytearrayobject.AppTestStringObject object at 0x00007fdd6a55a138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a55a1a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> E test_bytearray_mutable() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_bytearray_mutable E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_bytearray_mutable(): module = self.import_extension('foo', [ ("mutable", "METH_NOARGS", """ PyObject *base; base = PyByteArray_FromStringAndSize("test", 10); if (PyByteArray_GET_SIZE(base) != 10) return PyLong_FromLong(-PyByteArray_GET_SIZE(base)); memcpy(PyByteArray_AS_STRING(base), "works", 6); Py_INCREF(base); return base; """), ]) s = module.mutable() if s == b'\x00' * 10: assert False, "no RW access to bytearray" assert s[:6] == b'works\x00' try: test_bytearray_mutable() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> test_bytearray_mutable() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_bytearray_mutable module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestStringObject.test_AsByteArray _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a4363e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsByteArray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsByteArray'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsByteArray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsByteArray'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsByteArray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsByteArray'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsByteArray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd59022160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...sByteArray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7adc2020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7adc2020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...sByteArray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsByteArray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_AsByteArray'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_AsByteArray'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_AsByteArray at 0x00007fdd58742110> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestStringObject.w_compile_module of <pypy.module.cpyext.test.test_bytearrayobject...ort_extension of <pypy.module.cpyext.test.test_bytearrayobject.AppTestStringObject object at 0x00007fdd590081a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd59008218> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> E test_AsByteArray() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_AsByteArray E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_AsByteArray(): module = self.import_extension('foo', [ ("getbytearray", "METH_NOARGS", """ const char *c; PyObject *s2, *s1 = PyByteArray_FromStringAndSize("test", 4); if (s1 == NULL) return NULL; c = PyByteArray_AsString(s1); s2 = PyByteArray_FromStringAndSize(c, 4); Py_DECREF(s1); return s2; """), ]) s = module.getbytearray() assert s == b'test' try: test_AsByteArray() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> test_AsByteArray() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_AsByteArray module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestStringObject.test_manipulations ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6972c4d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_manipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_manipulations'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_manipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_manipulations'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_manipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_manipulations'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_manipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd796126b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a95e220> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a95e220> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_manipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_manipulations'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_manipulations'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_manipulations at 0x00007fdd58742188> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestStringObject.w_compile_module of <pypy.module.cpyext.test.test_bytearrayobject...ort_extension of <pypy.module.cpyext.test.test_bytearrayobject.AppTestStringObject object at 0x00007fdd7ae36138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ae361a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 173, in <module> E test_manipulations() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_manipulations E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_manipulations(): import sys module = self.import_extension('foo', [ ("bytearray_from_bytes", "METH_VARARGS", ''' return PyByteArray_FromStringAndSize(PyBytes_AsString( PyTuple_GetItem(args, 0)), 4); ''' ), ("bytes_from_bytearray", "METH_VARARGS", ''' char * buf; int n; PyObject * obj; obj = PyTuple_GetItem(args, 0); buf = PyByteArray_AsString(obj); if (buf == NULL) { PyErr_SetString(PyExc_ValueError, "non-null bytearray object expected"); return NULL; } n = PyByteArray_Size(obj); return PyBytes_FromStringAndSize(buf, n); ''' ), ("concat", "METH_VARARGS", """ PyObject * ret, *right, *left; PyObject *ba1, *ba2; if (!PyArg_ParseTuple(args, "OO", &left, &right)) { return PyUnicode_FromString("parse failed"); } ba1 = PyByteArray_FromObject(left); ba2 = PyByteArray_FromObject(right); if (ba1 == NULL || ba2 == NULL) { /* exception should be set */ return NULL; } ret = PyByteArray_Concat(ba1, ba2); return ret; """)]) assert module.bytearray_from_bytes(b"huheduwe") == b"huhe" assert module.bytes_from_bytearray(bytearray(b'abc')) == b'abc' if '__pypy__' in sys.builtin_module_names: # CPython only makes an assert. raises(ValueError, module.bytes_from_bytearray, 4.0) ret = module.concat(b'abc', b'def') assert ret == b'abcdef' assert not isinstance(ret, str) assert isinstance(ret, bytearray) raises(TypeError, module.concat, b'abc', u'def') try: test_manipulations() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 173, in <module> test_manipulations() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_manipulations module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestStringObject.test_bytearray_resize ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b366980>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_resize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytearray_resize'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_resize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytearray_resize'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_resize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytearray_resize'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_resize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508d0778> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ray_resize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68afc060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68afc060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ray_resize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytearray_resize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_bytearray_resize'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_bytearray_resize'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_bytearray_resize at 0x00007fdd7b02bf10> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestStringObject.w_compile_module of <pypy.module.cpyext.test.test_bytearrayobject...ort_extension of <pypy.module.cpyext.test.test_bytearrayobject.AppTestStringObject object at 0x00007fdd687dfc20>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd687dfd38> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 154, in <module> E test_bytearray_resize() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_bytearray_resize E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_bytearray_resize(): module = self.import_extension('foo', [ ("bytearray_resize", "METH_VARARGS", ''' PyObject *obj, *ba; int newsize, oldsize, ret; if (!PyArg_ParseTuple(args, "Oi", &obj, &newsize)) { return PyUnicode_FromString("parse failed"); } ba = PyByteArray_FromObject(obj); if (ba == NULL) return NULL; oldsize = PyByteArray_Size(ba); if (oldsize == 0) { return PyUnicode_FromString("oldsize is 0"); } ret = PyByteArray_Resize(ba, newsize); if (ret != 0) { printf("ret, oldsize, newsize= %d, %d, %d\\n", ret, oldsize, newsize); return NULL; } return ba; ''' )]) ret = module.bytearray_resize(b'abc', 6) assert len(ret) == 6,"%s, len=%d" % (ret, len(ret)) assert ret[:4] == b'abc\x00' ret = module.bytearray_resize(b'abcdefghi', 4) assert len(ret) == 4,"%s, len=%d" % (ret, len(ret)) assert ret == b'abcd' try: test_bytearray_resize() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 154, in <module> test_bytearray_resize() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_bytearray_resize module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestBytesObject.test_bytesobject ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd584ac818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytesobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytesobject'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytesobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytesobject'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytesobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytesobject'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytesobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a7b44a8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ytesobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a970260> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a970260> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ytesobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytesobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_bytesobject'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_bytesobject'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_bytesobject at 0x00007fdd58742b60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBytesObject.w_compile_module of <pypy.module.cpyext.test.test_bytesobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_bytesobject.AppTestBytesObject object at 0x00007fdd59195408>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd59195638> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 159, in <module> E test_bytesobject() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_bytesobject E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_bytesobject(): module = self.import_extension('foo', [ ("get_hello1", "METH_NOARGS", """ return PyBytes_FromStringAndSize( "Hello world<should not be included>", 11); """), ("get_hello2", "METH_NOARGS", """ return PyBytes_FromString("Hello world"); """), ("test_Size", "METH_NOARGS", """ PyObject* s = PyBytes_FromString("Hello world"); int result = PyBytes_Size(s); Py_DECREF(s); return PyLong_FromLong(result); """), ("test_Size_exception", "METH_NOARGS", """ PyObject* f = PyFloat_FromDouble(1.0); PyBytes_Size(f); Py_DECREF(f); return NULL; """), ("test_is_bytes", "METH_VARARGS", """ return PyBool_FromLong(PyBytes_Check(PyTuple_GetItem(args, 0))); """)], prologue='#include <stdlib.h>') assert module.get_hello1() == b'Hello world' assert module.get_hello2() == b'Hello world' assert module.test_Size() raises(TypeError, module.test_Size_exception) assert module.test_is_bytes(b"") assert not module.test_is_bytes(()) try: test_bytesobject() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 159, in <module> test_bytesobject() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_bytesobject module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestBytesObject.test_bytes_buffer_init ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6932d5b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytes_buffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytes_buffer_init'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytes_buffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytes_buffer_init'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytes_buffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytes_buffer_init'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytes_buffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58fb8160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...uffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd792d60a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd792d60a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...uffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytes_buffer_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_bytes_buffer_init'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_bytes_buffer_init'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_bytes_buffer_init at 0x00007fdd58742bd8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBytesObject.w_compile_module of <pypy.module.cpyext.test.test_bytesobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_bytesobject.AppTestBytesObject object at 0x00007fdd7ad74138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ad741a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 146, in <module> E test_bytes_buffer_init() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_bytes_buffer_init E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_bytes_buffer_init(): module = self.import_extension('foo', [ ("getbytes", "METH_NOARGS", """ PyObject *s, *t; char* c; s = PyBytes_FromStringAndSize(NULL, 4); if (s == NULL) return NULL; t = PyBytes_FromStringAndSize(NULL, 3); if (t == NULL) return NULL; Py_DECREF(t); c = PyBytes_AS_STRING(s); c[0] = 'a'; c[1] = 'b'; c[2] = 0; c[3] = 'c'; return s; """), ]) s = module.getbytes() assert len(s) == 4 assert s == b'ab\x00c' try: test_bytes_buffer_init() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 146, in <module> test_bytes_buffer_init() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_bytes_buffer_init module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestBytesObject.test_bytes_tp_alloc ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a4363e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytes_tp_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytes_tp_alloc'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytes_tp_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytes_tp_alloc'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytes_tp_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bytes_tp_alloc'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytes_tp_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac701d8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...s_tp_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a9840a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a9840a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...s_tp_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bytes_tp_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_bytes_tp_alloc'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_bytes_tp_alloc'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_bytes_tp_alloc at 0x00007fdd58742c50> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBytesObject.w_compile_module of <pypy.module.cpyext.test.test_bytesobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_bytesobject.AppTestBytesObject object at 0x00007fdd590a4138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd590a41e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 153, in <module> E test_bytes_tp_alloc() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_bytes_tp_alloc E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_bytes_tp_alloc(): module = self.import_extension('foo', [ ("tpalloc", "METH_NOARGS", """ PyObject *base; PyTypeObject * type; PyObject *obj; base = PyBytes_FromString("test"); if (PyBytes_GET_SIZE(base) != 4) return PyLong_FromLong(-PyBytes_GET_SIZE(base)); type = base->ob_type; if (type->tp_itemsize != 1) return PyLong_FromLong(type->tp_itemsize); obj = type->tp_alloc(type, 10); if (PyBytes_GET_SIZE(obj) != 10) return PyLong_FromLong(PyBytes_GET_SIZE(obj)); /* cannot work, there is only RO access memcpy(PyBytes_AS_STRING(obj), "works", 6); */ Py_INCREF(obj); return obj; """), ('alloc_rw', "METH_NOARGS", ''' PyObject *obj = (PyObject*)_PyObject_NewVar(&PyBytes_Type, 10); memcpy(PyBytes_AS_STRING(obj), "works", 6); return (PyObject*)obj; '''), ]) s = module.alloc_rw() assert s[:6] == b'works\0' # s[6:10] contains random garbage s = module.tpalloc() assert s == b'\x00' * 10 try: test_bytes_tp_alloc() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 153, in <module> test_bytes_tp_alloc() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_bytes_tp_alloc module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestBytesObject.test_AsString _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd50064db8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsString'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsString'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsString'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50b3acf0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_AsString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd680ea560> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd680ea560> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_AsString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_AsString'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_AsString'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_AsString at 0x00007fdd58742cc8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBytesObject.w_compile_module of <pypy.module.cpyext.test.test_bytesobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_bytesobject.AppTestBytesObject object at 0x00007fdd79c20020>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79c20090> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> E test_AsString() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_AsString E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_AsString(): module = self.import_extension('foo', [ ("getbytes", "METH_NOARGS", """ char *c; PyObject* s2, *s1 = PyBytes_FromStringAndSize("test", 4); c = PyBytes_AsString(s1); s2 = PyBytes_FromStringAndSize(c, 4); Py_DECREF(s1); return s2; """), ]) s = module.getbytes() assert s == b'test' try: test_AsString() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> test_AsString() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_AsString module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestBytesObject.test_manipulations _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd68787d30>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_manipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_manipulations'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_manipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_manipulations'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_manipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_manipulations'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_manipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd505dc138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ac50020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ac50020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_manipulations'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_manipulations'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_manipulations'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_manipulations at 0x00007fdd58742d40> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBytesObject.w_compile_module of <pypy.module.cpyext.test.test_bytesobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_bytesobject.AppTestBytesObject object at 0x00007fdd595d6138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd595d61a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_manipulations() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_manipulations E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_manipulations(): module = self.import_extension('foo', [ ("bytes_as_string", "METH_VARARGS", ''' return PyBytes_FromStringAndSize(PyBytes_AsString( PyTuple_GetItem(args, 0)), 4); ''' ), ("concat", "METH_VARARGS", """ PyObject ** v; PyObject * left = PyTuple_GetItem(args, 0); Py_INCREF(left); /* the reference will be stolen! */ v = &left; PyBytes_Concat(v, PyTuple_GetItem(args, 1)); return *v; """)]) assert module.bytes_as_string(b"huheduwe") == b"huhe" ret = module.concat(b'abc', b'def') assert ret == b'abcdef' try: test_manipulations() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_manipulations() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_manipulations module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________ AppTestBytesObject.test_py_bytes_as_string_None ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd68e06b60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_py_bytes_as_string_None'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_py_bytes_as_string_None'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_py_bytes_as_string_None'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_py_bytes_as_string_None'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_py_bytes_as_string_None'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_py_bytes_as_string_None'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_py_bytes_as_string_None'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508d0778> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tring_None'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7acd00e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7acd00e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tring_None'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_py_bytes_as_string_None'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_py_bytes_as_string_None'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_py_bytes_as_string_None'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_py_bytes_as_string_None at 0x00007fdd58742db8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBytesObject.w_compile_module of <pypy.module.cpyext.test.test_bytesobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_bytesobject.AppTestBytesObject object at 0x00007fdd79213018>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7abe8058> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> E test_py_bytes_as_string_None() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_py_bytes_as_string_None E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_py_bytes_as_string_None(): module = self.import_extension('foo', [ ("string_None", "METH_VARARGS", ''' if (PyBytes_AsString(Py_None)) { Py_RETURN_NONE; } return NULL; ''' )]) raises(TypeError, module.string_None) try: test_py_bytes_as_string_None() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> test_py_bytes_as_string_None() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_py_bytes_as_string_None module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestBytesObject.test_AsStringAndSize ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd585c2188>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsStringAndSize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsStringAndSize'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsStringAndSize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsStringAndSize'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsStringAndSize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsStringAndSize'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsStringAndSize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd513502c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ingAndSize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd595c8620> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd595c8620> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ingAndSize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsStringAndSize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_AsStringAndSize'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_AsStringAndSize'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_AsStringAndSize at 0x00007fdd58742e30> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBytesObject.w_compile_module of <pypy.module.cpyext.test.test_bytesobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_bytesobject.AppTestBytesObject object at 0x00007fdd6ab76138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ab761a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 164, in <module> E test_AsStringAndSize() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_AsStringAndSize E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_AsStringAndSize(): module = self.import_extension('foo', [ ("getbytes", "METH_NOARGS", """ PyObject* s1 = PyBytes_FromStringAndSize("te\\0st", 5); char *buf; Py_ssize_t len; if (PyBytes_AsStringAndSize(s1, &buf, &len) < 0) return NULL; if (len != 5) { PyErr_SetString(PyExc_AssertionError, "Bad Length"); return NULL; } if (PyBytes_AsStringAndSize(s1, &buf, NULL) >= 0) { PyErr_SetString(PyExc_AssertionError, "Should Have failed"); return NULL; } PyErr_Clear(); Py_DECREF(s1); Py_INCREF(Py_None); return Py_None; """), ("c_only", "METH_NOARGS", """ int ret; char * buf2; PyObject * obj = PyBytes_FromStringAndSize(NULL, 1024); if (!obj) return NULL; buf2 = PyBytes_AsString(obj); if (!buf2) return NULL; /* buf should not have been forced, issue #2395 */ ret = _PyBytes_Resize(&obj, 512); if (ret < 0) return NULL; Py_DECREF(obj); Py_INCREF(Py_None); return Py_None; """), ]) module.getbytes() module.c_only() try: test_AsStringAndSize() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 164, in <module> test_AsStringAndSize() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_AsStringAndSize module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestBytesObject.test_FromFormat ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd584ac818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromFormat'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromFormat'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromFormat'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromFormat'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromFormat'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromFormat'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromFormat'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50c84368> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...FromFormat'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ab80360> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ab80360> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...FromFormat'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromFormat'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_FromFormat'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_FromFormat'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_FromFormat at 0x00007fdd58742ea8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBytesObject.w_compile_module of <pypy.module.cpyext.test.test_bytesobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_bytesobject.AppTestBytesObject object at 0x00007fdd69b7a138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69b7a1a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> E test_FromFormat() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_FromFormat E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_FromFormat(): module = self.import_extension('foo', [ ("fmt", "METH_VARARGS", """ PyObject* fmt = PyTuple_GetItem(args, 0); int n = PyLong_AsLong(PyTuple_GetItem(args, 1)); PyObject* result = PyBytes_FromFormat(PyBytes_AsString(fmt), n); return result; """), ]) print(module.fmt(b'd:%d', 10)) assert module.fmt(b'd:%d', 10) == b'd:10' try: test_FromFormat() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> test_FromFormat() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_FromFormat module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestBytesObject.test_suboffsets ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd688b44d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_suboffsets'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_suboffsets'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_suboffsets'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_suboffsets'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_suboffsets'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_suboffsets'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_suboffsets'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d78228> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...suboffsets'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd514040e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd514040e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...suboffsets'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_suboffsets'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_suboffsets'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_suboffsets'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_suboffsets at 0x00007fdd58742f20> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBytesObject.w_compile_module of <pypy.module.cpyext.test.test_bytesobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_bytesobject.AppTestBytesObject object at 0x00007fdd6aa5a218>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6aa5a288> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_suboffsets() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_suboffsets E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_suboffsets(): module = self.import_extension('foo', [ ("check_suboffsets", "METH_O", """ Py_buffer view; PyObject_GetBuffer(args, &view, 0); return PyLong_FromLong(view.suboffsets == NULL); """)]) assert module.check_suboffsets(b'1234') == 1 try: test_suboffsets() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_suboffsets() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_suboffsets module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestCapsule.test_capsule_import ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b366980>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_capsule_import'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_capsule_import'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_capsule_import'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58fcc160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ule_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd680762a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd680762a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ule_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_capsule_import'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_capsule_import'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_capsule_import at 0x00007fdd58743178> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCapsule.w_compile_module of <pypy.module.cpyext.test.test_capsule.AppTestCapsu...Capsule.w_import_extension of <pypy.module.cpyext.test.test_capsule.AppTestCapsule object at 0x00007fdd79c161e0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79c16410> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> E test_capsule_import() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_capsule_import E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_capsule_import(): module = self.import_extension('foo', [ ("set_ptr", "METH_O", """ PyObject *capsule, *module; void *ptr = PyLong_AsVoidPtr(args); if (PyErr_Occurred()) return NULL; capsule = PyCapsule_New(ptr, "foo._ptr", NULL); if (PyErr_Occurred()) return NULL; module = PyImport_ImportModule("foo"); PyModule_AddObject(module, "_ptr", capsule); Py_DECREF(module); if (PyErr_Occurred()) return NULL; Py_RETURN_NONE; """), ("get_ptr", "METH_NOARGS", """ void *ptr = PyCapsule_Import("foo._ptr", 0); if (PyErr_Occurred()) return NULL; return PyLong_FromVoidPtr(ptr); """)]) module.set_ptr(1234) assert 'capsule object "foo._ptr" at ' in str(module._ptr) import gc; gc.collect() assert module.get_ptr() == 1234 del module._ptr try: test_capsule_import() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> test_capsule_import() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_capsule_import module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestCapsule.test_capsule_set ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b336098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_set'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_capsule_set'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_set'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_capsule_set'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_set'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_capsule_set'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_set'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abec188> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...apsule_set'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd59494020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd59494020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...apsule_set'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_set'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_capsule_set'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_capsule_set'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_capsule_set at 0x00007fdd587431f0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCapsule.w_compile_module of <pypy.module.cpyext.test.test_capsule.AppTestCapsu...Capsule.w_import_extension of <pypy.module.cpyext.test.test_capsule.AppTestCapsule object at 0x00007fdd6ac4a330>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ac4a3a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 214, in <module> E test_capsule_set() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_capsule_set E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_capsule_set(): # taken from _testcapimodule.c module = self.import_extension('foo', [ ("test_capsule", "METH_NOARGS", """ PyObject *object; const char *error = NULL; char *known = "known"; #define FAIL(x) { error = (x); goto exit; } #define CHECK_DESTRUCTOR \\ PyGC_Collect(); \\ PyGC_Collect(); \\ PyGC_Collect(); \\ if (capsule_error) { \\ FAIL(capsule_error); \\ } \\ else if (!capsule_destructor_call_count) { \\ FAIL("destructor not called!"); \\ } \\ capsule_destructor_call_count = 0; object = PyCapsule_New(capsule_pointer, capsule_name, capsule_destructor); PyCapsule_SetContext(object, capsule_context); capsule_destructor(object); CHECK_DESTRUCTOR; Py_DECREF(object); CHECK_DESTRUCTOR; object = PyCapsule_New(known, "ignored", NULL); PyCapsule_SetPointer(object, capsule_pointer); PyCapsule_SetName(object, capsule_name); PyCapsule_SetDestructor(object, capsule_destructor); PyCapsule_SetContext(object, capsule_context); capsule_destructor(object); CHECK_DESTRUCTOR; /* intentionally access using the wrong name */ void *pointer2 = PyCapsule_GetPointer(object, "the wrong name"); if (!PyErr_Occurred()) { FAIL("PyCapsule_GetPointer should have failed but did not!"); } PyErr_Clear(); if (pointer2) { if (pointer2 == capsule_pointer) { FAIL("PyCapsule_GetPointer should not have" " returned the internal pointer!"); } else { FAIL("PyCapsule_GetPointer should have " "returned NULL pointer but did not!"); } } PyCapsule_SetDestructor(object, NULL); Py_DECREF(object); if (capsule_destructor_call_count) { FAIL("destructor called when it should not have been!"); } exit: if (error) { PyErr_Format(PyExc_RuntimeError, "test_capsule: %s", error); return NULL; } Py_RETURN_NONE; #undef FAIL """), ], prologue=""" #include <Python.h> /* Coverage testing of capsule objects. */ static const char *capsule_name = "capsule name"; static char *capsule_pointer = "capsule pointer"; static char *capsule_context = "capsule context"; static const char *capsule_error = NULL; static int capsule_destructor_call_count = 0; static void capsule_destructor(PyObject *o) { capsule_destructor_call_count++; if (PyCapsule_GetContext(o) != capsule_context) { capsule_error = "context did not match in destructor!"; } else if (PyCapsule_GetDestructor(o) != capsule_destructor) { capsule_error = "destructor did not match in destructor! (woah!)"; } else if (PyCapsule_GetName(o) != capsule_name) { capsule_error = "name did not match in destructor!"; } else if (PyCapsule_GetPointer(o, capsule_name) != capsule_pointer) { capsule_error = "pointer did not match in destructor!"; } } """ ) module.test_capsule() try: test_capsule_set() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 214, in <module> test_capsule_set() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_capsule_set module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________ AppTestCapsule.test_capsule_destructor_via_gc_collect _____________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a821628>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_destructor_via_gc_colle...__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_capsule_destructor_via_gc_collect'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_destructor_via_gc_colle...__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_capsule_destructor_via_gc_collect'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_destructor_via_gc_colle...__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_capsule_destructor_via_gc_collect'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_destructor_via_gc_collect'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd59042318> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...gc_collect'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69bad0a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69bad0a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...gc_collect'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_capsule_destructor_via_gc_collect'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_capsule_destructor_via_gc_collect'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_capsule_destructor_via_gc_collect'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_capsule_destructor_via_gc_collect at 0x00007fdd58743268> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCapsule.w_compile_module of <pypy.module.cpyext.test.test_capsule.AppTestCapsu...Capsule.w_import_extension of <pypy.module.cpyext.test.test_capsule.AppTestCapsule object at 0x00007fdd7975a138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79748870> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 197, in <module> E test_capsule_destructor_via_gc_collect() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_capsule_destructor_via_gc_collect E module = self.import_extension('foo_cap_gc', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_capsule_destructor_via_gc_collect(): # Like test_capsule_set but the C code calls PyGC_Collect() directly # instead of going through Python's gc.collect. This mirrors what # _testcapimodule.c does in its test_capsule() function. # On CPython, Py_DECREF immediately calls tp_dealloc so PyGC_Collect # is a no-op for refcounted objects. On PyPy, PyGC_Collect() must # trigger rawrefcount collection for the destructor to be called. module = self.import_extension('foo_cap_gc', [ ("test_capsule_gc", "METH_NOARGS", """ PyObject *object; const char *error = NULL; #define FAIL(x) { error = (x); goto exit; } #define CHECK_DESTRUCTOR \\ PyGC_Collect(); \\ PyGC_Collect(); \\ if (cap_error) { \\ FAIL(cap_error); \\ } \\ else if (!cap_destructor_count) { \\ FAIL("destructor not called!"); \\ } \\ cap_destructor_count = 0; object = PyCapsule_New(cap_pointer, cap_name, cap_destructor); PyCapsule_SetContext(object, cap_context); cap_destructor(object); CHECK_DESTRUCTOR; Py_DECREF(object); CHECK_DESTRUCTOR; object = PyCapsule_New(cap_pointer, "ignored", NULL); PyCapsule_SetPointer(object, cap_pointer); PyCapsule_SetName(object, cap_name); PyCapsule_SetDestructor(object, cap_destructor); PyCapsule_SetContext(object, cap_context); cap_destructor(object); CHECK_DESTRUCTOR; PyCapsule_SetDestructor(object, NULL); Py_DECREF(object); if (cap_destructor_count) { FAIL("destructor called when it should not have been!"); } exit: if (error) { PyErr_Format(PyExc_RuntimeError, "test_capsule: %s", error); return NULL; } Py_RETURN_NONE; #undef FAIL #undef CHECK_DESTRUCTOR """), ], prologue=""" #include <Python.h> static const char *cap_name = "capsule name"; static char *cap_pointer = "capsule pointer"; static char *cap_context = "capsule context"; static const char *cap_error = NULL; static int cap_destructor_count = 0; static void cap_destructor(PyObject *o) { cap_destructor_count++; if (PyCapsule_GetContext(o) != cap_context) { cap_error = "context did not match in destructor!"; } else if (PyCapsule_GetDestructor(o) != cap_destructor) { cap_error = "destructor did not match in destructor! (woah!)"; } else if (PyCapsule_GetName(o) != cap_name) { cap_error = "name did not match in destructor!"; } else if (PyCapsule_GetPointer(o, cap_name) != cap_pointer) { cap_error = "pointer did not match in destructor!"; } } """) module.test_capsule_gc() try: test_capsule_destructor_via_gc_collect() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 197, in <module> test_capsule_destructor_via_gc_collect() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_capsule_destructor_via_gc_collect module = self.import_extension('foo_cap_gc', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________________ AppTestCell.test_cell_type __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd584ac818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_cell_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_cell_type'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_cell_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_cell_type'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_cell_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_cell_type'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_cell_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d78228> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._cell_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ad30020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ad30020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._cell_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_cell_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_cell_type'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_cell_type'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_cell_type at 0x00007fdd587433d0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCell.w_compile_module of <pypy.module.cpyext.test.test_cell.AppTestCell object...d AppTestCell.w_import_extension of <pypy.module.cpyext.test.test_cell.AppTestCell object at 0x00007fdd6abcd1d8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6abcd3d0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> E test_cell_type() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_cell_type E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_cell_type(): module = self.import_extension('foo', [ ("cell_type", "METH_O", """ PyDict_SetItemString(args, "cell", (PyObject*)&PyCell_Type); Py_RETURN_NONE; """)]) d = {} module.cell_type(d) def f(o): def g(): return o return g cell_type = type(f(0).__closure__[0]) assert d["cell"] is cell_type try: test_cell_type() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> test_cell_type() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_cell_type module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestInstanceMethod.test_instancemethod ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd688b44d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_instancemethod'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_instancemethod'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_instancemethod'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_instancemethod'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_instancemethod'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_instancemethod'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_instancemethod'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58fcc160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ancemethod'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68a85320> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68a85320> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ancemethod'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_instancemethod'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_instancemethod'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_instancemethod'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_instancemethod at 0x00007fdd58743d30> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestInstanceMethod.w_compile_module of <pypy.module.cpyext.test.test_classobject.A...mport_extension of <pypy.module.cpyext.test.test_classobject.AppTestInstanceMethod object at 0x00007fdd7aba0138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7aba0330> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> E test_instancemethod() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_instancemethod E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_instancemethod(): module = self.import_extension('foo', [ ("instancemethod", "METH_O", """ return PyInstanceMethod_New(args); """)]) def testfunction(self): """some doc""" return self class InstanceMethod: id = module.instancemethod(id) testmethod = module.instancemethod(testfunction) inst = InstanceMethod() assert id(inst) == inst.id() assert inst.testmethod() is inst assert InstanceMethod.testmethod(inst) is inst assert InstanceMethod.__dict__['testmethod'](inst) is inst assert inst.testmethod.__doc__ == testfunction.__doc__ assert InstanceMethod.testmethod.__doc__ == testfunction.__doc__ InstanceMethod.testmethod.attribute = "test" assert testfunction.attribute == "test" raises(AttributeError, setattr, inst.testmethod, "attribute", "test") try: test_instancemethod() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> test_instancemethod() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_instancemethod module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________ AppTestInstanceMethod.test_instancemethod_cpyext_attributes __________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a4363e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_instancemethod_cpyext_attribute...l__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_instancemethod_cpyext_attributes'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_instancemethod_cpyext_attribute...l__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_instancemethod_cpyext_attributes'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_instancemethod_cpyext_attribute...l__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_instancemethod_cpyext_attributes'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_instancemethod_cpyext_attributes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abec2c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...attributes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b2f0060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b2f0060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...attributes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_instancemethod_cpyext_attributes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_instancemethod_cpyext_attributes'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_instancemethod_cpyext_attributes'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_instancemethod_cpyext_attributes at 0x00007fdd58743da8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestInstanceMethod.w_compile_module of <pypy.module.cpyext.test.test_classobject.A...mport_extension of <pypy.module.cpyext.test.test_classobject.AppTestInstanceMethod object at 0x00007fdd6ac76720>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ac76838> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 146, in <module> E test_instancemethod_cpyext_attributes() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_instancemethod_cpyext_attributes E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_instancemethod_cpyext_attributes(): module = self.import_extension('foo', [ ("instancemethod_get_doc", "METH_O", """ PyObject* instancemethod = PyInstanceMethod_New(args); return PyObject_GetAttrString(instancemethod, "__doc__"); """), ("instancemethod_get_name", "METH_O", """ PyObject* instancemethod = PyInstanceMethod_New(args); return PyObject_GetAttrString(instancemethod, "__name__"); """), ("instancemethod_get_module", "METH_O", """ PyObject* instancemethod = PyInstanceMethod_New(args); return PyObject_GetAttrString(instancemethod, "__module__"); """) ]) def testfunction(self): """some doc""" return self assert(module.instancemethod_get_doc(testfunction) == testfunction.__doc__) assert(module.instancemethod_get_module(testfunction) == testfunction.__module__) assert(module.instancemethod_get_name(testfunction) == testfunction.__name__) try: test_instancemethod_cpyext_attributes() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 146, in <module> test_instancemethod_cpyext_attributes() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_instancemethod_cpyext_attributes module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestUnicodeObject.test_encode_decode ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd505e0e30>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_encode_decode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_encode_decode'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_encode_decode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_encode_decode'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_encode_decode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_encode_decode'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_encode_decode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50c6a278> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ode_decode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aa08560> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aa08560> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ode_decode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_encode_decode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_encode_decode'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_encode_decode'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_encode_decode at 0x00007fdd5887a458> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestUnicodeObject.w_compile_module of <pypy.module.cpyext.test.test_codecs.AppTest...ct.w_import_extension of <pypy.module.cpyext.test.test_codecs.AppTestUnicodeObject object at 0x00007fdd79b56918>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79b4c9c0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> E test_encode_decode() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_encode_decode E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_encode_decode(): module = self.import_extension('foo', [ ("encode", "METH_VARARGS", """ PyObject *obj=NULL; const char *encoding=NULL; const char *errors=NULL; if (!PyArg_ParseTuple(args, "Os|s:foo.encode", &obj, &encoding, &errors)) return NULL; return PyCodec_Encode(obj, encoding, errors); """), ("decode", "METH_VARARGS", """ PyObject *obj=NULL; const char *encoding=NULL; const char *errors=NULL; if (!PyArg_ParseTuple(args, "Os|s:foo.decode", &obj, &encoding, &errors)) return NULL; return PyCodec_Decode(obj, encoding, errors); """),]) assert module.decode(b'abc', 'latin-1') == 'abc' assert module.encode('abc', 'latin-1') == b'abc' assert module.decode(b'abc', 'latin-1', 'strict') == 'abc' assert module.encode('abc', 'latin-1', 'strict') == b'abc' try: test_encode_decode() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> test_encode_decode() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_encode_decode module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestCComplex.test_AsCComplex ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b336098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsCComplex'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsCComplex'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AsCComplex'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d78610> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd78cb41e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd78cb41e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_AsCComplex'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_AsCComplex'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_AsCComplex at 0x00007fdd5887b628> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCComplex.w_compile_module of <pypy.module.cpyext.test.test_complexobject.AppTe....w_import_extension of <pypy.module.cpyext.test.test_complexobject.AppTestCComplex object at 0x00007fdd594d8f00>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd594d90f8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> E test_AsCComplex() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_AsCComplex E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_AsCComplex(): module = self.import_extension('foo', [ ("as_tuple", "METH_O", """ Py_complex c = PyComplex_AsCComplex(args); if (PyErr_Occurred()) return NULL; return Py_BuildValue("dd", c.real, c.imag); """)]) assert module.as_tuple(12-34j) == (12, -34) assert module.as_tuple(-3.14) == (-3.14, 0.0) raises(TypeError, module.as_tuple, "12") try: test_AsCComplex() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> test_AsCComplex() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_AsCComplex module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestCComplex.test_FromCComplex _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd50391790>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromCComplex'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromCComplex'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromCComplex'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5904c6d8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...omCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aa50060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aa50060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...omCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_FromCComplex'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_FromCComplex'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_FromCComplex at 0x00007fdd5887b5b0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCComplex.w_compile_module of <pypy.module.cpyext.test.test_complexobject.AppTe....w_import_extension of <pypy.module.cpyext.test.test_complexobject.AppTestCComplex object at 0x00007fdd7978e1a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7978e218> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> E test_FromCComplex() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_FromCComplex E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_FromCComplex(): module = self.import_extension('foo', [ ("test", "METH_NOARGS", """ Py_complex c = {1.2, 3.4}; return PyComplex_FromCComplex(c); """)]) assert module.test() == 1.2 + 3.4j try: test_FromCComplex() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> test_FromCComplex() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_FromCComplex module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestCComplex.test_PyComplex_to_WComplex __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd688b44d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyComplex_to_WComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyComplex_to_WComplex'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyComplex_to_WComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyComplex_to_WComplex'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyComplex_to_WComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyComplex_to_WComplex'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyComplex_to_WComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd513503e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...o_WComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ac72020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ac72020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...o_WComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyComplex_to_WComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_PyComplex_to_WComplex'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_PyComplex_to_WComplex'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_PyComplex_to_WComplex at 0x00007fdd5887b538> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCComplex.w_compile_module of <pypy.module.cpyext.test.test_complexobject.AppTe....w_import_extension of <pypy.module.cpyext.test.test_complexobject.AppTestCComplex object at 0x00007fdd595c0138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd595c01a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> E test_PyComplex_to_WComplex() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyComplex_to_WComplex E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_PyComplex_to_WComplex(): module = self.import_extension('foo', [ ("test", "METH_NOARGS", """ Py_complex c = {1.2, 3.4}; PyObject *obj = PyObject_Malloc(sizeof(PyComplexObject)); obj = PyObject_Init(obj, &PyComplex_Type); assert(obj != NULL); ((PyComplexObject *)obj)->cval = c; return obj; """)]) assert module.test() == 1.2 + 3.4j try: test_PyComplex_to_WComplex() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> test_PyComplex_to_WComplex() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyComplex_to_WComplex module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestCComplex.test_WComplex_to_PyComplex __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd68f93538>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_WComplex_to_PyComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_WComplex_to_PyComplex'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_WComplex_to_PyComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_WComplex_to_PyComplex'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_WComplex_to_PyComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_WComplex_to_PyComplex'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_WComplex_to_PyComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50c844a8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._PyComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd693aa1a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd693aa1a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._PyComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_WComplex_to_PyComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_WComplex_to_PyComplex'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_WComplex_to_PyComplex'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_WComplex_to_PyComplex at 0x00007fdd5887b448> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCComplex.w_compile_module of <pypy.module.cpyext.test.test_complexobject.AppTe....w_import_extension of <pypy.module.cpyext.test.test_complexobject.AppTestCComplex object at 0x00007fdd6809e138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6809e1a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> E test_WComplex_to_PyComplex() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_WComplex_to_PyComplex E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_WComplex_to_PyComplex(): module = self.import_extension('foo', [ ("test", "METH_O", """ Py_complex c = ((PyComplexObject *)args)->cval; return Py_BuildValue("dd", c.real, c.imag); """)]) assert module.test(1.2 + 3.4j) == (1.2, 3.4) try: test_WComplex_to_PyComplex() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> test_WComplex_to_PyComplex() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_WComplex_to_PyComplex module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestCComplex.test_PyComplex_AsCComplex ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd585c2188>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyComplex_AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyComplex_AsCComplex'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyComplex_AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyComplex_AsCComplex'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyComplex_AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyComplex_AsCComplex'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyComplex_AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58dc8138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abf6020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abf6020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyComplex_AsCComplex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_PyComplex_AsCComplex'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_PyComplex_AsCComplex'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_PyComplex_AsCComplex at 0x00007fdd5887b6a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCComplex.w_compile_module of <pypy.module.cpyext.test.test_complexobject.AppTe....w_import_extension of <pypy.module.cpyext.test.test_complexobject.AppTestCComplex object at 0x00007fdd51374138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd513741a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> E test_PyComplex_AsCComplex() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyComplex_AsCComplex E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_PyComplex_AsCComplex(): module = self.import_extension('foo', [ ("test", "METH_O", """ Py_complex c = PyComplex_AsCComplex(args); if (c.real == -1. && PyErr_Occurred()) { return NULL; } return Py_BuildValue("dd", c.real, c.imag); """)]) class C(complex): def __complex__(self): return -10-10j assert module.test(complex(1 + 1j)) == (1, 1) assert complex(C(1 + 1j)) == -10-10j, C(1 + 1j) # since it is a subclass, the __complex__ is ignored. assert module.test(C(1 + 1j)) == (1, 1) try: test_PyComplex_AsCComplex() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> test_PyComplex_AsCComplex() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyComplex_AsCComplex module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestContext.test_context __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a1f4890>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_context'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_context'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_context'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_context'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_context'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_context'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_context'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5904c6d8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_context'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68ac6020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68ac6020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_context'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_context'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_context'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_context'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_context at 0x00007fdd5887b8f8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestContext.w_compile_module of <pypy.module.cpyext.test.test_contextvars.AppTestC...ext.w_import_extension of <pypy.module.cpyext.test.test_contextvars.AppTestContext object at 0x00007fdd78fdd948>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7946bd00> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 249, in <module> E test_context() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_context E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_context(): module = self.import_extension('foo', [ ("new", "METH_VARARGS", ''' PyObject *obj = NULL; const char *name; if (!PyArg_ParseTuple(args, "s|O:new", &name, &obj)) { return NULL; } return PyContextVar_New(name, obj); ''' ), ("set", "METH_VARARGS", ''' PyObject *obj, *val; if (!PyArg_ParseTuple(args, "OO:set", &obj, &val)) { return NULL; } return PyContextVar_Set(obj, val); ''' ), ("reset", "METH_VARARGS", ''' PyObject *obj, *token; if (!PyArg_ParseTuple(args, "OO:reset", &obj, &token)) { return NULL; } int ret = PyContextVar_Reset(obj, token); if (ret < 0) return NULL; return PyLong_FromLong(ret); ''' ), ("get", "METH_VARARGS", ''' PyObject *obj, *def=NULL, *val; if (!PyArg_ParseTuple(args, "O|O:get", &obj, &def)) { return NULL; } if (PyContextVar_Get(obj, def, &val) < 0) { return NULL; } if (val == NULL) { Py_RETURN_NONE; } return val; ''' ), ("get_value", "METH_VARARGS", ''' /* equivalent to cython's Cython/Includes/cpython/contextvars.pxd */ PyObject *var, *value=NULL, *default_value=NULL; if (!PyArg_ParseTuple(args, "O|O:get_value", &var, &default_value)) { return NULL; } if (PyContextVar_Get(var, NULL, &value) < 0) { return NULL; } if (value == NULL) { if (default_value == NULL) Py_RETURN_NONE; Py_INCREF(default_value); return default_value; } return value; ''' ), ("get_value_no_default", "METH_VARARGS", ''' /* equivalent to cython's Cython/Includes/cpython/contextvars.pxd */ PyObject *var, *value=NULL, *default_value=NULL; if (!PyArg_ParseTuple(args, "O|O:get_value_no_default", &var, &default_value)) { return NULL; } if (PyContextVar_Get(var, default_value, &value) < 0) { return NULL; } if (value == NULL) { Py_RETURN_NONE; } return value; ''' ), ]) var = module.new("testme", 3) tok4 = module.set(var, 4) assert tok4.var is var assert module.get(var) == 4 tok5 = module.set(var, 5) assert tok5.var is var assert module.get(var) == 5 module.reset(var, tok5) assert module.get(var) == 4 # no default var = module.new("testme") five = module.get(var, 5) assert five == 5 # cython tests import contextvars pycvar = contextvars.ContextVar("pycvar") cvar = module.new("cvar") cvar_with_default = module.new("cvar_wd", "DEFAULT") assert module.get_value(cvar) is None assert module.get_value(cvar, "default") == "default" assert module.get_value(pycvar) is None assert module.get_value(pycvar, "default") == "default" assert module.get_value(cvar_with_default) == "DEFAULT" assert module.get_value(cvar_with_default, "default") == "DEFAULT" assert module.get_value_no_default(cvar) is None assert module.get_value_no_default(cvar, "default") == "default" assert module.get_value_no_default(pycvar) is None assert module.get_value_no_default(pycvar, "default") == "default" assert module.get_value_no_default(cvar_with_default) == "DEFAULT" # this is the only variant that gives a different answer ret = module.get_value_no_default(cvar_with_default, "default") print('ret', ret) assert ret == "default" try: test_context() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 249, in <module> test_context() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_context module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestCpythonExtension.test_createmodule ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_createmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_createmodule'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_createmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_createmodule'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_createmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_createmodule'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_createmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abe6340> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...eatemodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e720e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e720e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...eatemodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_createmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_createmodule'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_createmodule'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_createmodule at 0x00007fdd7b024e30> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd7b19c138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ac36c98> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in <module> E test_createmodule() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_createmodule E self.import_module(name='foo') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_createmodule(): import sys self.import_module(name='foo') assert 'foo' in sys.modules try: test_createmodule() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in <module> test_createmodule() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_createmodule self.import_module(name='foo') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________ AppTestCpythonExtension.test_export_function _________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_function'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_function'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_function'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_function'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_function'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_function'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_function'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58fdc160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_function'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a1be7e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a1be7e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_function'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_function'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_export_function'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_export_function'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_export_function at 0x00007fdd7b024ea8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd7ad641a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ad64218> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> E test_export_function() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in test_export_function E module = self.import_module(name='foo', body=body) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_export_function(): import sys if '__pypy__' in sys.modules: from cpyext import is_cpyext_builtin_function as is_cpyext_function else: import inspect is_cpyext_function = inspect.isbuiltin body = """ PyObject* foo_pi(PyObject* self, PyObject *args) { return PyFloat_FromDouble(3.14); } static PyMethodDef methods[] = { { "return_pi", foo_pi, METH_NOARGS }, { NULL } }; static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, "foo", /* m_name */ NULL, /* m_doc */ -1, /* m_size */ methods, /* m_methods */ }; """ module = self.import_module(name='foo', body=body) assert 'foo' in sys.modules assert 'return_pi' in dir(module) assert module.return_pi is not None assert is_cpyext_function(module.return_pi) assert module.return_pi() == 3.14 assert module.return_pi.__module__ == 'foo' try: test_export_function() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> test_export_function() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in test_export_function module = self.import_module(name='foo', body=body) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________ AppTestCpythonExtension.test_export_docstring _________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59188020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_docstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_docstring'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_docstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_docstring'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_docstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_docstring'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_docstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac701d8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._docstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e0a960> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e0a960> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._docstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_docstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_export_docstring'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_export_docstring'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_export_docstring at 0x00007fdd7b024f20> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd6a80e1a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a80e218> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_export_docstring() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in test_export_docstring E module = self.import_module(name='foo', body=body) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_export_docstring(): body = """ PyDoc_STRVAR(foo_pi_doc, "Return pi."); PyObject* foo_pi(PyObject* self, PyObject *args) { return PyFloat_FromDouble(3.14); } static PyMethodDef methods[] = { { "return_pi", foo_pi, METH_NOARGS, foo_pi_doc }, { NULL } }; static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, "foo", /* m_name */ NULL, /* m_doc */ -1, /* m_size */ methods, /* m_methods */ }; """ module = self.import_module(name='foo', body=body) doc = module.return_pi.__doc__ assert doc == "Return pi." try: test_export_docstring() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_export_docstring() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in test_export_docstring module = self.import_module(name='foo', body=body) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestCpythonExtension.test_load_dynamic ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd505e0e30>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_load_dynamic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_load_dynamic'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_load_dynamic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_load_dynamic'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_load_dynamic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_load_dynamic'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_load_dynamic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d54188> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ad_dynamic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50b1e020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50b1e020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ad_dynamic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_load_dynamic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_load_dynamic'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_load_dynamic'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_load_dynamic at 0x00007fdd7b024f98> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd69bd97c0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69bd9830> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> E test_load_dynamic() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in test_load_dynamic E foo = self.import_module(name='foo', body=body, use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_load_dynamic(): import sys body = """ static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, "%(modname)s", /* m_name */ NULL, /* m_doc */ -1, /* m_size */ NULL, /* m_methods */ }; """ foo = self.import_module(name='foo', body=body, use_imp=True) assert 'foo' in sys.modules del sys.modules['foo'] # replaces imp.load_dynamic('foo', foo.__file__), removed in 3.12 import importlib.machinery, importlib.util loader = importlib.machinery.ExtensionFileLoader('foo', foo.__file__) spec = importlib.util.spec_from_file_location( 'foo', foo.__file__, loader=loader) foo2 = importlib.util.module_from_spec(spec) sys.modules['foo'] = foo2 loader.exec_module(foo2) assert 'foo' in sys.modules assert foo.__dict__ == foo2.__dict__ try: test_load_dynamic() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> test_load_dynamic() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in test_load_dynamic foo = self.import_module(name='foo', body=body, use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________ AppTestCpythonExtension.test_InitModule4_dotted ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd513049f8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_InitModule4_dotted'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_InitModule4_dotted'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_InitModule4_dotted'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_InitModule4_dotted'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_InitModule4_dotted'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_InitModule4_dotted'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_InitModule4_dotted'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abec458> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...le4_dotted'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd59114060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd59114060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...le4_dotted'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_InitModule4_dotted'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_InitModule4_dotted'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_InitModule4_dotted'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_InitModule4_dotted at 0x00007fdd7b025010> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd7b278170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b2781e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_InitModule4_dotted() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_InitModule4_dotted E module = self.import_module(name=expected_name, filename="dotted") E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_InitModule4_dotted(): """ If the module name passed to Py_InitModule4 includes a package, only the module name (the part after the last dot) is considered when computing the name of the module initializer function. """ expected_name = "pypy.module.cpyext.test.dotted" module = self.import_module(name=expected_name, filename="dotted") assert module.__name__ == expected_name, module.__name__ try: test_InitModule4_dotted() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_InitModule4_dotted() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_InitModule4_dotted module = self.import_module(name=expected_name, filename="dotted") ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________ AppTestCpythonExtension.test_InitModule4_in_package ______________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_InitModule4_in_package'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_InitModule4_in_package'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_InitModule4_in_package'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_InitModule4_in_package'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_InitModule4_in_package'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_InitModule4_in_package'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_InitModule4_in_package'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50b3ae30> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...in_package'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69b44520> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd69b44520> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...in_package'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_InitModule4_in_package'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_InitModule4_in_package'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_InitModule4_in_package'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_InitModule4_in_package at 0x00007fdd7b025088> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd5127a2f8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5127a368> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> E test_InitModule4_in_package() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 126, in test_InitModule4_in_package E module = self.import_module(name="apple.banana", filename="banana") E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_InitModule4_in_package(): """ If `apple.banana` is an extension module which calls Py_InitModule4 with only "banana" as a name, the resulting module nevertheless is stored at `sys.modules["apple.banana"]`. """ module = self.import_module(name="apple.banana", filename="banana") assert module.__name__ == "apple.banana" try: test_InitModule4_in_package() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> test_InitModule4_in_package() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 126, in test_InitModule4_in_package module = self.import_module(name="apple.banana", filename="banana") ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________ AppTestCpythonExtension.test_recursive_package_import _____________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_recursive_package_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_recursive_package_import'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_recursive_package_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_recursive_package_import'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_recursive_package_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_recursive_package_import'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_recursive_package_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac7e250> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...age_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a99e020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a99e020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...age_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_recursive_package_import'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_recursive_package_import'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_recursive_package_import'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_recursive_package_import at 0x00007fdd7b025100> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd7ae5e368>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ae5e3d8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> E test_recursive_package_import() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_recursive_package_import E banana = self.compile_module( E ^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 77, in w_compile_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_recursive_package_import(): """ If `cherry.date` is an extension module which imports `apple.banana`, the latter is added to `sys.modules` for the `"apple.banana"` key. """ import sys, types, os # Build the extensions. banana = self.compile_module( "apple.banana", source_files=[os.path.join(self.here, 'banana.c')]) date = self.compile_module( "cherry.date", source_files=[os.path.join(self.here, 'date.c')]) # Set up some package state so that the extensions can actually be # imported. cherry = sys.modules['cherry'] = types.ModuleType('cherry') cherry.__path__ = [os.path.dirname(date)] apple = sys.modules['apple'] = types.ModuleType('apple') apple.__path__ = [os.path.dirname(banana)] import cherry.date assert sys.modules['apple.banana'].__name__ == 'apple.banana' assert sys.modules['cherry.date'].__name__ == 'cherry.date' try: test_recursive_package_import() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> test_recursive_package_import() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_recursive_package_import banana = self.compile_module( ^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 77, in w_compile_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestCpythonExtension.test_modinit_func ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd5887aea8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_modinit_func'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_modinit_func'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_modinit_func'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_modinit_func'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_modinit_func'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_modinit_func'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_modinit_func'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd59042318> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...dinit_func'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79c52120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79c52120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...dinit_func'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_modinit_func'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_modinit_func'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_modinit_func'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_modinit_func at 0x00007fdd7b025178> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd791fcfe0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd794d63d8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in <module> E test_modinit_func() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_modinit_func E module = self.import_module(name='modinit') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_modinit_func(): """ A module can use the PyMODINIT_FUNC macro to declare or define its module initializer function. """ module = self.import_module(name='modinit') assert module.__name__ == 'modinit' try: test_modinit_func() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in <module> test_modinit_func() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_modinit_func module = self.import_module(name='modinit') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________ AppTestCpythonExtension.test_export_function2 _________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd585c2188>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_function2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_function2'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_function2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_function2'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_function2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_function2'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_function2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac101b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._function2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abe80e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abe80e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._function2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_function2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_export_function2'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_export_function2'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_export_function2 at 0x00007fdd7b0251f0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd5919cc60>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5919ccd0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 168, in <module> E test_export_function2() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 158, in test_export_function2 E module = self.import_module(name='foo', body=body) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_export_function2(): body = """ static PyObject* my_objects[1]; static PyObject* foo_cached_pi(PyObject* self, PyObject *args) { if (my_objects[0] == NULL) { my_objects[0] = PyFloat_FromDouble(3.14); } Py_INCREF(my_objects[0]); return my_objects[0]; } static PyObject* foo_drop_pi(PyObject* self, PyObject *args) { if (my_objects[0] != NULL) { Py_DECREF(my_objects[0]); my_objects[0] = NULL; } Py_INCREF(Py_None); return Py_None; } static PyObject* foo_retinvalid(PyObject* self, PyObject *args) { return (PyObject*)0xAFFEBABE; } static PyMethodDef methods[] = { { "return_pi", foo_cached_pi, METH_NOARGS }, { "drop_pi", foo_drop_pi, METH_NOARGS }, { "return_invalid_pointer", foo_retinvalid, METH_NOARGS }, { NULL } }; static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, "%(modname)s", /* m_name */ NULL, /* m_doc */ -1, /* m_size */ methods, /* m_methods */ }; """ module = self.import_module(name='foo', body=body) assert module.return_pi() == 3.14 module.drop_pi() module.drop_pi() assert module.return_pi() == 3.14 assert module.return_pi() == 3.14 module.drop_pi() skip("Hmm, how to check for the exception?") raises(api.InvalidPointerException, module.return_invalid_pointer) try: test_export_function2() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 168, in <module> test_export_function2() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 158, in test_export_function2 module = self.import_module(name='foo', body=body) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestCpythonExtension.test_argument _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af24cc8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_argument'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_argument'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_argument'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_argument'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_argument'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_argument'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_argument'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5904ca98> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_argument'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7a7e6160> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7a7e6160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_argument'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_argument'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_argument'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_argument'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_argument at 0x00007fdd7b025268> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd79c5a480>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79c5a528> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> E test_argument() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in test_argument E module = self.import_module(name='foo', body=body) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_argument(): import sys body = """ PyObject* foo_test(PyObject* self, PyObject *args) { PyObject *t = PyTuple_GetItem(args, 0); Py_INCREF(t); return t; } static PyMethodDef methods[] = { { "test", foo_test, METH_VARARGS }, { NULL } }; static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, "%(modname)s", /* m_name */ NULL, /* m_doc */ -1, /* m_size */ methods, /* m_methods */ }; """ module = self.import_module(name='foo', body=body) assert module.test(True, True) == True try: test_argument() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> test_argument() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in test_argument module = self.import_module(name='foo', body=body) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestCpythonExtension.test_exception ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_exception'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_exception'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_exception'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d78868> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5a0220> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5a0220> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_exception'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_exception'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_exception at 0x00007fdd7b0252e0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd7b28e560>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b28ed08> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> E test_exception() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in test_exception E module = self.import_module(name='foo', body=body) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_exception(): import sys body = """ static PyObject* foo_pi(PyObject* self, PyObject *args) { PyErr_SetString(PyExc_Exception, "moo!"); return NULL; } static PyMethodDef methods[] = { { "raise_exception", foo_pi, METH_NOARGS }, { NULL } }; static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, "%(modname)s", /* m_name */ NULL, /* m_doc */ -1, /* m_size */ methods, /* m_methods */ }; """ module = self.import_module(name='foo', body=body) exc = raises(Exception, module.raise_exception) if type(exc.value) is not Exception: raise exc.value assert str(exc.value) == "moo!" try: test_exception() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> test_exception() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in test_exception module = self.import_module(name='foo', body=body) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestCpythonExtension.test_refcount _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcount'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_refcount'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcount'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_refcount'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcount'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_refcount'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcount'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58ff4160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_refcount'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd584462e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd584462e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_refcount'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcount'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_refcount'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_refcount'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_refcount at 0x00007fdd7b025358> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd7946bec0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79627ad0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 174, in <module> E test_refcount() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 170, in test_refcount E module = self.import_module(name='foo', body=body) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_refcount(): import sys body = """ static PyObject* foo_pi(PyObject* self, PyObject *args) { PyObject *true_obj = Py_True; Py_ssize_t refcnt = true_obj->ob_refcnt; Py_ssize_t refcnt_after; Py_INCREF(true_obj); Py_INCREF(true_obj); if (!PyBool_Check(true_obj)) Py_RETURN_NONE; refcnt_after = true_obj->ob_refcnt; Py_DECREF(true_obj); Py_DECREF(true_obj); fprintf(stderr, "REFCNT %ld %ld\\n", refcnt, refcnt_after); return PyBool_FromLong(refcnt_after == refcnt + 2); } static PyObject* foo_bar(PyObject* self, PyObject *args) { PyObject *true_obj = Py_True; PyObject *tup = NULL; Py_ssize_t refcnt = true_obj->ob_refcnt; Py_ssize_t refcnt_after; tup = PyTuple_New(1); Py_INCREF(true_obj); if (PyTuple_SetItem(tup, 0, true_obj) < 0) return NULL; refcnt_after = true_obj->ob_refcnt; Py_DECREF(tup); fprintf(stderr, "REFCNT2 %ld %ld %ld\\n", refcnt, refcnt_after, true_obj->ob_refcnt); return PyBool_FromLong(refcnt_after == refcnt + 1 && refcnt == true_obj->ob_refcnt); } static PyMethodDef methods[] = { { "test_refcount", foo_pi, METH_NOARGS }, { "test_refcount2", foo_bar, METH_NOARGS }, { NULL } }; static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, "%(modname)s", /* m_name */ NULL, /* m_doc */ -1, /* m_size */ methods, /* m_methods */ }; """ module = self.import_module(name='foo', body=body) assert module.test_refcount() assert module.test_refcount2() try: test_refcount() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 174, in <module> test_refcount() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 170, in test_refcount module = self.import_module(name='foo', body=body) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________ AppTestCpythonExtension.test_init_exception __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b3366b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_init_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_init_exception'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_init_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_init_exception'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_init_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_init_exception'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_init_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac04138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abb90e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abb90e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_init_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_init_exception'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_init_exception'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_init_exception at 0x00007fdd7b0253d0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd79611478>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd796114e8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> E test_init_exception() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in test_init_exception E raise exc.value E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 46, in raises E func(*args, **kwargs) E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_init_exception(): import sys init = """ PyErr_SetString(PyExc_Exception, "moo!"); return NULL; """ exc = raises(Exception, self.import_module, name='foo', init=init) if type(exc.value) is not Exception: raise exc.value assert str(exc.value) == "moo!" try: test_init_exception() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> test_init_exception() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in test_init_exception raise exc.value File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 46, in raises func(*args, **kwargs) File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestCpythonExtension.test_new_exception __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a5a4368>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_new_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_new_exception'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_new_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_new_exception'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_new_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_new_exception'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_new_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac70e08> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a992160> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a992160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_new_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_new_exception'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_new_exception'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_new_exception at 0x00007fdd7b0254c0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd7ae5e480>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ae5e598> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> E test_new_exception() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_new_exception E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_new_exception(): mod = self.import_extension('foo', [ ('newexc', 'METH_VARARGS', ''' char *name = _PyUnicode_AsString(PyTuple_GetItem(args, 0)); return PyErr_NewException(name, PyTuple_GetItem(args, 1), PyTuple_GetItem(args, 2)); ''' ), ]) raises(SystemError, mod.newexc, "name", Exception, {}) try: test_new_exception() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> test_new_exception() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_new_exception mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestCpythonExtension.test_hash_pointer ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a4d93d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_hash_pointer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_hash_pointer'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_hash_pointer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_hash_pointer'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_hash_pointer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_hash_pointer'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_hash_pointer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50c84638> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...sh_pointer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd584c2020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd584c2020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...sh_pointer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_hash_pointer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_hash_pointer'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_hash_pointer'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_hash_pointer at 0x00007fdd7b025538> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd7ad423a0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ad42410> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> E test_hash_pointer() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_hash_pointer E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_hash_pointer(): mod = self.import_extension('foo', [ ('get_hash', 'METH_NOARGS', ''' return PyLong_FromLong(_Py_HashPointer(Py_None)); ''' ), ]) h = mod.get_hash() assert h != 0 assert h % 4 == 0 # it's the pointer value try: test_hash_pointer() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> test_hash_pointer() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_hash_pointer mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestCpythonExtension.test_types ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_types'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_types'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_types'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_types'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_types'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_types'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_types'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd506302f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_types'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5680a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5680a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_types'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_types'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_types'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_types'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_types at 0x00007fdd7b0255b0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd6a816bf0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a816c60> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_types() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_types E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_types(): """test the presence of random types""" mod = self.import_extension('foo', [ ('get_names', 'METH_NOARGS', ''' /* XXX in tests, the C type is not correct */ #define NAME(type) ((PyTypeObject*)&type)->tp_name return Py_BuildValue("ssssss", NAME(PyCell_Type), NAME(PyModule_Type), NAME(PyProperty_Type), NAME(PyStaticMethod_Type), NAME(PyClassMethod_Type), NAME(PyCFunction_Type) ); ''' ), ]) assert mod.get_names() == ('cell', 'module', 'property', 'staticmethod', 'classmethod', 'builtin_function_or_method') try: test_types() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_types() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_types mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________ AppTestCpythonExtension.test_get_programname _________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_programname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_programname'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_programname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_programname'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_programname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_programname'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_programname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58fdc2a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...rogramname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79005420> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79005420> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...rogramname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_programname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_get_programname'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_get_programname'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_get_programname at 0x00007fdd7b025628> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd7ad78368>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ad783d8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> E test_get_programname() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_get_programname E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_get_programname(): mod = self.import_extension('foo', [ ('get_programname', 'METH_NOARGS', ''' wchar_t* name1 = Py_GetProgramName(); wchar_t* name2 = Py_GetProgramName(); if (name1 != name2) Py_RETURN_FALSE; return PyUnicode_FromWideChar(name1, wcslen(name1)); ''' )], prologue='#include <wchar.h>') p = mod.get_programname() print(p) assert 'py' in p try: test_get_programname() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> test_get_programname() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_get_programname mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestCpythonExtension.test_get_version ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a5a4368>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_version'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_version'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_version'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_version'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_version'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_version'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_version'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd506ba138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...et_version'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ae66020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ae66020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...et_version'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_version'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_get_version'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_get_version'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_get_version at 0x00007fdd7b0256a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd505aa250>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd505aa2c0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> E test_get_version() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_get_version E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_get_version(): mod = self.import_extension('foo', [ ('get_version', 'METH_NOARGS', ''' char* name1 = Py_GetVersion(); char* name2 = Py_GetVersion(); if (name1 != name2) Py_RETURN_FALSE; return PyUnicode_FromString(name1); ''' ), ]) p = mod.get_version() print(p) assert 'PyPy' in p try: test_get_version() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> test_get_version() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_get_version mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________ AppTestCpythonExtension.test_no_double_imports ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd688b44d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_no_double_imports'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_no_double_imports'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_no_double_imports'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_no_double_imports'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_no_double_imports'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_no_double_imports'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_no_double_imports'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5904cbb0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...le_imports'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58576020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58576020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...le_imports'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_no_double_imports'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_no_double_imports'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_no_double_imports'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_no_double_imports at 0x00007fdd7b025718> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd7ae00138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ae001a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 167, in <module> E test_no_double_imports() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in test_no_double_imports E self.import_module(name='foo', init=init, body=body) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_no_double_imports(): import sys, os try: body = """ static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, "%(modname)s", /* m_name */ NULL, /* m_doc */ -1, /* m_size */ NULL /* m_methods */ }; """ init = """ static int _imported_already = 0; FILE *f = fopen("_imported_already", "w"); fprintf(f, "imported_already: %d\\n", _imported_already); fclose(f); _imported_already = 1; return PyModule_Create(&moduledef); """ self.import_module(name='foo', init=init, body=body) assert 'foo' in sys.modules f = open('_imported_already') data = f.read() f.close() assert data == 'imported_already: 0\n' f = open('_imported_already', 'w') f.write('not again!\n') f.close() m1 = sys.modules['foo'] m2 = self.load_module(m1.__file__, name='foo') assert m1 is m2 assert m1 is sys.modules['foo'] f = open('_imported_already') data = f.read() f.close() assert data == 'not again!\n' finally: try: os.unlink('_imported_already') except OSError: pass try: test_no_double_imports() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 167, in <module> test_no_double_imports() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in test_no_double_imports self.import_module(name='foo', init=init, body=body) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________ AppTestCpythonExtension.test_no_structmember _________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b3366b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_no_structmember'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_no_structmember'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_no_structmember'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_no_structmember'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_no_structmember'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_no_structmember'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_no_structmember'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac042c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ructmember'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5124d620> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5124d620> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ructmember'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_no_structmember'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_no_structmember'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_no_structmember'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_no_structmember at 0x00007fdd7b025790> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd6a858170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a8595c8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> E test_no_structmember() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_no_structmember E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_no_structmember(): """structmember.h should not be included by default.""" mod = self.import_extension('foo', [ ('bar', 'METH_NOARGS', ''' /* reuse a name that is #defined in structmember.h */ int RO = 0; (void)RO; Py_RETURN_NONE; ''' ), ]) try: test_no_structmember() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> test_no_structmember() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_no_structmember mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________ AppTestCpythonExtension.test_consistent_flags _________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_consistent_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_consistent_flags'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_consistent_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_consistent_flags'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_consistent_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_consistent_flags'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_consistent_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58ff42c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tent_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58661ae0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58661ae0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tent_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_consistent_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_consistent_flags'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_consistent_flags'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_consistent_flags at 0x00007fdd7b025808> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd7ad78480>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ad784f0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> E test_consistent_flags() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_consistent_flags E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_consistent_flags(): import sys mod = self.import_extension('foo', [ ('test_optimize', 'METH_NOARGS', ''' return PyLong_FromLong(Py_OptimizeFlag); '''), ]) # This is intentionally set to -1 by default from missing.c # and should be set to sys.flags.optimize at startup assert mod.test_optimize() == sys.flags.optimize try: test_consistent_flags() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> test_consistent_flags() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_consistent_flags mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestCpythonExtension.test_generic_type ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_generic_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_generic_type'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_generic_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_generic_type'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_generic_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_generic_type'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_generic_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b2c4160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...neric_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd516b0760> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd516b0760> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...neric_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_generic_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_generic_type'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_generic_type'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_generic_type at 0x00007fdd7b025880> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCpythonExtension.w_compile_module of <pypy.module.cpyext.test.test_cpyext.AppT...w_import_extension of <pypy.module.cpyext.test.test_cpyext.AppTestCpythonExtension object at 0x00007fdd50632a30>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd50632aa0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> E test_generic_type() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_generic_type E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_generic_type(): mod = self.import_extension('foo', [ ('is_genericalias_type', 'METH_O', """ long test = (Py_TYPE(args) == &Py_GenericAliasType); return PyLong_FromLong(test); """)]) assert mod.is_genericalias_type(tuple[int]) try: test_generic_type() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> test_generic_type() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_generic_type mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________________ AppTestDatetime.test_CAPI ___________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a4d9448>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CAPI'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CAPI'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CAPI'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CAPI'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CAPI'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CAPI'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CAPI'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58fdc638> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...'test_CAPI'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79787e60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79787e60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...'test_CAPI'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CAPI'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_CAPI'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_CAPI'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_CAPI at 0x00007fdd5887be20> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDatetime.w_compile_module of <pypy.module.cpyext.test.test_datetime.AppTestDat...etime.w_import_extension of <pypy.module.cpyext.test.test_datetime.AppTestDatetime object at 0x00007fdd68560720>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd68143440> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 155, in <module> E test_CAPI() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_CAPI E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_CAPI(): module = self.import_extension('foo', [ ("get_types", "METH_NOARGS", """ PyDateTime_IMPORT; if (!PyDateTimeAPI) { PyErr_SetString(PyExc_RuntimeError, "No PyDateTimeAPI"); return NULL; } return PyTuple_Pack(5, PyDateTimeAPI->DateType, PyDateTimeAPI->DateTimeType, PyDateTimeAPI->TimeType, PyDateTimeAPI->DeltaType, PyDateTimeAPI->TZInfoType); """), ("clear_types", "METH_NOARGS", """ Py_DECREF(PyDateTimeAPI->DateType); Py_DECREF(PyDateTimeAPI->DateTimeType); Py_DECREF(PyDateTimeAPI->TimeType); Py_DECREF(PyDateTimeAPI->DeltaType); Py_DECREF(PyDateTimeAPI->TZInfoType); Py_RETURN_NONE; """ ) ], prologue='#include "datetime.h"\n') import datetime assert module.get_types() == (datetime.date, datetime.datetime, datetime.time, datetime.timedelta, datetime.tzinfo) module.clear_types() try: test_CAPI() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 155, in <module> test_CAPI() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_CAPI module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestDatetime.test_constructors _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58d2c3e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_constructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constructors'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_constructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constructors'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_constructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_constructors'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_constructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b2c8fe8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...nstructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5954e060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5954e060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...nstructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_constructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_constructors'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_constructors'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_constructors at 0x00007fdd5887be98> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDatetime.w_compile_module of <pypy.module.cpyext.test.test_datetime.AppTestDat...etime.w_import_extension of <pypy.module.cpyext.test.test_datetime.AppTestDatetime object at 0x00007fdd6a859638>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a8596a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 191, in <module> E test_constructors() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_constructors E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_constructors(): module = self.import_extension('foo', [ ("new_date", "METH_NOARGS", """ PyDateTime_IMPORT; return PyDateTimeAPI->Date_FromDate( 2000, 6, 6, PyDateTimeAPI->DateType); """), ("new_time", "METH_NOARGS", """ PyDateTime_IMPORT; return PyDateTimeAPI->Time_FromTime( 6, 6, 6, 6, Py_None, PyDateTimeAPI->TimeType); """), ("new_datetime", "METH_NOARGS", """ PyDateTime_IMPORT; return PyDateTimeAPI->DateTime_FromDateAndTime( 2000, 6, 6, 6, 6, 6, 6, Py_None, PyDateTimeAPI->DateTimeType); """), ("new_datetime_fromtimestamp", "METH_NOARGS", """ PyDateTime_IMPORT; PyObject *ts = PyFloat_FromDouble(200000.0); Py_INCREF(Py_None); PyObject *tsargs = PyTuple_Pack(2, ts, Py_None); PyObject *rv = PyDateTimeAPI->DateTime_FromTimestamp( (PyObject *)PyDateTimeAPI->DateTimeType, tsargs, NULL); Py_DECREF(tsargs); return rv; """), ("new_dt_fromts_tzinfo", "METH_O", """ PyDateTime_IMPORT; PyObject *ts = PyFloat_FromDouble(200000.0); PyObject *tsargs = PyTuple_Pack(1, ts); PyObject *tskwargs = PyDict_New(); Py_INCREF(args); PyDict_SetItemString(tskwargs, "tz", args); PyObject *rv = PyDateTimeAPI->DateTime_FromTimestamp( (PyObject *)PyDateTimeAPI->DateTimeType, tsargs, tskwargs); Py_DECREF(tsargs); Py_DECREF(tskwargs); return rv; """), ("new_date_fromtimestamp", "METH_NOARGS", """ PyDateTime_IMPORT; PyObject *ts = PyFloat_FromDouble(1430366400.0); Py_INCREF(Py_None); PyObject *tsargs = PyTuple_Pack(1, ts); PyObject *rv = PyDateTimeAPI->Date_FromTimestamp( (PyObject *)PyDateTimeAPI->DateType, tsargs); Py_DECREF(tsargs); return rv; """), ], prologue='#include "datetime.h"\n') import datetime assert module.new_date() == datetime.date(2000, 6, 6) assert module.new_time() == datetime.time(6, 6, 6, 6) assert module.new_datetime() == datetime.datetime( 2000, 6, 6, 6, 6, 6, 6) utc = datetime.timezone.utc # .fromtimestamp tests assert (module.new_datetime_fromtimestamp() == datetime.datetime.fromtimestamp(200000.0)) assert (module.new_dt_fromts_tzinfo(utc) == datetime.datetime.fromtimestamp(200000.0, tz=utc)) assert (module.new_date_fromtimestamp() == datetime.date.fromtimestamp(1430366400.0)) try: test_constructors() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 191, in <module> test_constructors() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_constructors module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestDatetime.test_timezone_constructors __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af2b448>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_timezone_constructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_timezone_constructors'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_timezone_constructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_timezone_constructors'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_timezone_constructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_timezone_constructors'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_timezone_constructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d54430> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...nstructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd585493e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd585493e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...nstructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_timezone_constructors'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_timezone_constructors'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_timezone_constructors'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_timezone_constructors at 0x00007fdd5887bf10> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDatetime.w_compile_module of <pypy.module.cpyext.test.test_datetime.AppTestDat...etime.w_import_extension of <pypy.module.cpyext.test.test_datetime.AppTestDatetime object at 0x00007fdd7aa78218>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7aa78288> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 156, in <module> E test_timezone_constructors() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_timezone_constructors E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_timezone_constructors(): # Testing that we can build timezones via the C api module = self.import_extension('foo', [ ("new_timezone_fromoffset", "METH_NOARGS", """ PyDateTime_IMPORT; PyObject *delta = PyDelta_FromDSU(0, 60 * 60, 0); PyObject *tzinfo = PyTimeZone_FromOffset(delta); Py_DECREF(delta); return tzinfo; """), ("new_timezone_fromoffset_and_name", "METH_NOARGS", """ PyDateTime_IMPORT; PyObject *delta = PyDelta_FromDSU(0, 60 * 60, 0); PyObject *name = PyUnicode_FromString("spam"); PyObject *tzinfo = PyTimeZone_FromOffsetAndName(delta, name); Py_DECREF(delta); Py_DECREF(name); return tzinfo; """), ("utc_singleton_access", "METH_NOARGS", """ PyDateTime_IMPORT; Py_INCREF(PyDateTime_TimeZone_UTC); return PyDateTime_TimeZone_UTC; """), ], prologue='#include "datetime.h"\n') import datetime one_hour = datetime.timedelta(hours=1) expected = datetime.timezone(one_hour) assert module.new_timezone_fromoffset() == expected expected = datetime.timezone(one_hour, "spam") assert module.new_timezone_fromoffset_and_name() == expected assert module.utc_singleton_access() == datetime.timezone.utc try: test_timezone_constructors() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 156, in <module> test_timezone_constructors() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_timezone_constructors module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestDatetime.test_macros __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59188020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macros'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macros'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macros'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b2c4278> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6acf14a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6acf14a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_macros'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_macros'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_macros at 0x00007fdd5887bf88> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDatetime.w_compile_module of <pypy.module.cpyext.test.test_datetime.AppTestDat...etime.w_import_extension of <pypy.module.cpyext.test.test_datetime.AppTestDatetime object at 0x00007fdd58efa330>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58efa9c0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 243, in <module> E test_macros() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_macros E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_macros(): module = self.import_extension('foo', [ ("test_date_macros", "METH_NOARGS", """ PyObject* obj; PyDateTime_Date* d; PyDateTime_IMPORT; if (!PyDateTimeAPI) { PyErr_SetString(PyExc_RuntimeError, "No PyDateTimeAPI"); return NULL; } obj = PyDate_FromDate(2000, 6, 6); d = (PyDateTime_Date*)obj; PyDateTime_GET_YEAR(obj); PyDateTime_GET_YEAR(d); PyDateTime_GET_MONTH(obj); PyDateTime_GET_MONTH(d); PyDateTime_GET_DAY(obj); PyDateTime_GET_DAY(d); return obj; """), ("test_datetime_macros", "METH_NOARGS", """ PyObject* obj; PyDateTime_DateTime *dt; PyDateTime_IMPORT; if (!PyDateTimeAPI) { PyErr_SetString(PyExc_RuntimeError, "No PyDateTimeAPI"); return NULL; } obj = PyDateTime_FromDateAndTime(2000, 6, 6, 6, 6, 6, 6); dt = (PyDateTime_DateTime*)obj; PyDateTime_GET_YEAR(obj); PyDateTime_GET_YEAR(dt); PyDateTime_GET_MONTH(obj); PyDateTime_GET_MONTH(dt); PyDateTime_GET_DAY(obj); PyDateTime_GET_DAY(dt); PyDateTime_DATE_GET_HOUR(obj); PyDateTime_DATE_GET_HOUR(dt); PyDateTime_DATE_GET_MINUTE(obj); PyDateTime_DATE_GET_MINUTE(dt); PyDateTime_DATE_GET_SECOND(obj); PyDateTime_DATE_GET_SECOND(dt); PyDateTime_DATE_GET_MICROSECOND(obj); PyDateTime_DATE_GET_MICROSECOND(dt); PyDateTime_GET_FOLD(obj); PyDateTime_DATE_GET_FOLD(obj); return obj; """), ("test_time_macros", "METH_NOARGS", """ PyObject* obj; PyDateTime_Time* t; PyDateTime_IMPORT; if (!PyDateTimeAPI) { PyErr_SetString(PyExc_RuntimeError, "No PyDateTimeAPI"); return NULL; } obj = PyTime_FromTime(6, 6, 6, 6); t = (PyDateTime_Time*)obj; PyDateTime_TIME_GET_HOUR(obj); PyDateTime_TIME_GET_HOUR(t); PyDateTime_TIME_GET_MINUTE(obj); PyDateTime_TIME_GET_MINUTE(t); PyDateTime_TIME_GET_SECOND(obj); PyDateTime_TIME_GET_SECOND(t); PyDateTime_TIME_GET_MICROSECOND(obj); PyDateTime_TIME_GET_MICROSECOND(t); return obj; """), ("test_delta_macros", "METH_NOARGS", """ PyObject* obj; PyDateTime_Delta* delta; PyDateTime_IMPORT; if (!PyDateTimeAPI) { PyErr_SetString(PyExc_RuntimeError, "No PyDateTimeAPI"); return NULL; } obj = PyDelta_FromDSU(6, 6, 6); delta = (PyDateTime_Delta*)obj; #if defined(PYPY_VERSION) || PY_VERSION_HEX >= 0x03030000 // These macros are only defined in CPython 3.x and PyPy. // See: http://bugs.python.org/issue13727 PyDateTime_DELTA_GET_DAYS(obj); PyDateTime_DELTA_GET_DAYS(delta); PyDateTime_DELTA_GET_SECONDS(obj); PyDateTime_DELTA_GET_SECONDS(delta); PyDateTime_DELTA_GET_MICROSECONDS(obj); PyDateTime_DELTA_GET_MICROSECONDS(delta); #endif return obj; """), ], prologue='#include "datetime.h"\n') import datetime assert module.test_date_macros() == datetime.date(2000, 6, 6) assert module.test_datetime_macros() == datetime.datetime( 2000, 6, 6, 6, 6, 6, 6) assert module.test_time_macros() == datetime.time(6, 6, 6, 6) assert module.test_delta_macros() == datetime.timedelta(6, 6, 6) try: test_macros() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 243, in <module> test_macros() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_macros module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestDatetime.test_tzinfo __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd502d2110>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tzinfo'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_tzinfo'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tzinfo'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_tzinfo'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tzinfo'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_tzinfo'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tzinfo'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd59042598> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_tzinfo'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5891ac60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5891ac60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_tzinfo'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tzinfo'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_tzinfo'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_tzinfo'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_tzinfo at 0x00007fdd6a4d8020> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDatetime.w_compile_module of <pypy.module.cpyext.test.test_datetime.AppTestDat...etime.w_import_extension of <pypy.module.cpyext.test.test_datetime.AppTestDatetime object at 0x00007fdd69f2a8e0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69f2a950> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 171, in <module> E test_tzinfo() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_tzinfo E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_tzinfo(): module = self.import_extension('foo', [ ("time_with_tzinfo", "METH_O", """ PyDateTime_IMPORT; return PyDateTimeAPI->Time_FromTime( 6, 6, 6, 6, args, PyDateTimeAPI->TimeType); """), ("datetime_with_tzinfo", "METH_O", """ PyObject * obj; int tzrefcnt = args->ob_refcnt; PyDateTime_IMPORT; obj = PyDateTimeAPI->DateTime_FromDateAndTime( 2000, 6, 6, 6, 6, 6, 6, args, PyDateTimeAPI->DateTimeType); if (!((PyDateTime_DateTime*)obj)->hastzinfo) { Py_DECREF(obj); PyErr_SetString(PyExc_ValueError, "missing tzinfo"); return NULL; } if (((PyDateTime_DateTime*)obj)->tzinfo->ob_refcnt <= tzrefcnt) { Py_DECREF(obj); PyErr_SetString(PyExc_ValueError, "tzinfo refcnt not incremented"); return NULL; } return obj; """), ], prologue='#include "datetime.h"\n') from datetime import tzinfo, datetime, timedelta, time # copied from datetime documentation class GMT1(tzinfo): def __del__(self): print('deleting GMT1') def utcoffset(self, dt): return timedelta(hours=1) + self.dst(dt) def dst(self, dt): return timedelta(0) def tzname(self,dt): return "GMT +1" gmt1 = GMT1() dt1 = module.time_with_tzinfo(gmt1) assert dt1 == time(6, 6, 6, 6, gmt1) assert '+01' in str(dt1) dt_tz = module.datetime_with_tzinfo(gmt1) assert dt_tz == datetime(2000, 6, 6, 6, 6, 6, 6, gmt1) try: test_tzinfo() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 171, in <module> test_tzinfo() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_tzinfo module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestDatetime.test_checks __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_checks'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_checks'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_checks'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_checks'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_checks'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_checks'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_checks'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac7e3b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_checks'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58fae060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58fae060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_checks'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_checks'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_checks'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_checks'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_checks at 0x00007fdd6a4d8098> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDatetime.w_compile_module of <pypy.module.cpyext.test.test_datetime.AppTestDat...etime.w_import_extension of <pypy.module.cpyext.test.test_datetime.AppTestDatetime object at 0x00007fdd6a799600>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a799670> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 150, in <module> E test_checks() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_checks E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_checks(): module = self.import_extension('foo', [ ("checks", "METH_O", """ PyDateTime_IMPORT; return PyTuple_Pack(10, PyBool_FromLong(PyDateTime_Check(args)), PyBool_FromLong(PyDateTime_CheckExact(args)), PyBool_FromLong(PyDate_Check(args)), PyBool_FromLong(PyDate_CheckExact(args)), PyBool_FromLong(PyTime_Check(args)), PyBool_FromLong(PyTime_CheckExact(args)), PyBool_FromLong(PyDelta_Check(args)), PyBool_FromLong(PyDelta_CheckExact(args)), PyBool_FromLong(PyTZInfo_Check(args)), PyBool_FromLong(PyTZInfo_CheckExact(args)) ); """), ], prologue='#include "datetime.h"\n') from datetime import tzinfo, datetime, timedelta, time, date o = date(1, 1, 1) assert module.checks(o) == (False,) * 2 + (True,) * 2 + (False,) * 6 o = time(1, 1, 1) assert module.checks(o) == (False,) * 4 + (True,) * 2 + (False,) * 4 o = timedelta(1, 1, 1) assert module.checks(o) == (False,) * 6 + (True,) * 2 + (False,) * 2 o = datetime(1, 1, 1) assert module.checks(o) == (True,) * 3 + (False,) * 7 # isinstance(datetime, date) o = tzinfo() assert module.checks(o) == (False,) * 8 + (True,) * 2 try: test_checks() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 150, in <module> test_checks() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_checks module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________________ AppTestDatetime.test_misc ___________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af2b448>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_misc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_misc'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_misc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_misc'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_misc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_misc'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_misc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5900e138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...'test_misc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a409fa0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a409fa0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...'test_misc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_misc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_misc'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_misc'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_misc at 0x00007fdd6a4d8110> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDatetime.w_compile_module of <pypy.module.cpyext.test.test_datetime.AppTestDat...etime.w_import_extension of <pypy.module.cpyext.test.test_datetime.AppTestDatetime object at 0x00007fdd6935c480>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6935c4f0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> E test_misc() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_misc E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_misc(): # Taken from the cython time_pxd.pyx test_time() test module = self.import_extension('foo', [ ("getsystemclock", "METH_NOARGS", """ PyDateTime_IMPORT; _PyTime_t tic = _PyTime_GetSystemClock(); double r = _PyTime_AsSecondsDouble(tic); return PyFloat_FromDouble(r); """), ("get_qualname", "METH_NOARGS", """ return PyType_GetQualName(PyDateTimeAPI->DateType); """), ], prologue='#include "datetime.h"\n') import time # warm up the time.time function for _ in range(2000): tic1 = time.time() tic2 = module.getsystemclock() tic3 = time.time() assert tic1 <= tic2, "%s, %s" % (tic1, tic2) assert tic2 <= tic3, "%s, %s" % (tic2, tic3) assert module.get_qualname() == "date" try: test_misc() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> test_misc() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_misc module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestDictObject.test_dictproxytype _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59188020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_dictproxytype'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_dictproxytype'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_dictproxytype'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_dictproxytype'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_dictproxytype'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_dictproxytype'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_dictproxytype'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b2c4390> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tproxytype'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5080e060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5080e060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tproxytype'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_dictproxytype'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_dictproxytype'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_dictproxytype'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_dictproxytype at 0x00007fdd6a4d89f8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDictObject.w_compile_module of <pypy.module.cpyext.test.test_dictobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_dictobject.AppTestDictObject object at 0x00007fdd6a862138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a862330> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 149, in <module> E test_dictproxytype() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_dictproxytype E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_dictproxytype(): module = self.import_extension('foo', [ ("dict_proxy", "METH_VARARGS", """ PyObject * dict; PyObject * proxydict; int i; if (!PyArg_ParseTuple(args, "O", &dict)) return NULL; proxydict = PyDictProxy_New(dict); #ifdef PYPY_VERSION // PyDictProxy_Check[Exact] are PyPy-specific. if (!PyDictProxy_Check(proxydict)) { Py_DECREF(proxydict); PyErr_SetNone(PyExc_ValueError); return NULL; } if (!PyDictProxy_CheckExact(proxydict)) { Py_DECREF(proxydict); PyErr_SetNone(PyExc_ValueError); return NULL; } #endif // PYPY_VERSION i = PyObject_Size(proxydict); Py_DECREF(proxydict); return PyLong_FromLong(i); """), ]) assert module.dict_proxy({'a': 1, 'b': 2}) == 2 try: test_dictproxytype() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 149, in <module> test_dictproxytype() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_dictproxytype module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestDictObject.test_getitemwitherror ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd502d2110>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitemwitherror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getitemwitherror'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitemwitherror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getitemwitherror'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitemwitherror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getitemwitherror'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitemwitherror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5904cdb8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...mwitherror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a420060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a420060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...mwitherror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitemwitherror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_getitemwitherror'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_getitemwitherror'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_getitemwitherror at 0x00007fdd6a4d8a70> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDictObject.w_compile_module of <pypy.module.cpyext.test.test_dictobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_dictobject.AppTestDictObject object at 0x00007fdd7ad3d478>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ad3d4e8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 157, in <module> E test_getitemwitherror() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getitemwitherror E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_getitemwitherror(): module = self.import_extension('foo', [ ("dict_getitem", "METH_VARARGS", """ PyObject *d, *key, *result; if (!PyArg_ParseTuple(args, "OO", &d, &key)) { return NULL; } result = PyDict_GetItemWithError(d, key); if (result == NULL && !PyErr_Occurred()) Py_RETURN_NONE; Py_XINCREF(result); return result; """), ("dict_getitem_string", "METH_VARARGS", """ PyObject *d, *result; char * key; if (!PyArg_ParseTuple(args, "Os", &d, &key)) { return NULL; } result = _PyDict_GetItemStringWithError(d, key); if (result == NULL && !PyErr_Occurred()) Py_RETURN_NONE; Py_XINCREF(result); return result; """)]) d = {'foo': 'bar'} assert module.dict_getitem(d, 'foo') == 'bar' assert module.dict_getitem_string(d, 'foo') == 'bar' assert module.dict_getitem(d, 'missing') is None assert module.dict_getitem_string(d, 'missing') is None with raises(TypeError): module.dict_getitem(d, []) with raises(TypeError): module.dict_getitem_string(d, []) try: test_getitemwitherror() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 157, in <module> test_getitemwitherror() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getitemwitherror module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestDictObject.test_setdefault _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a9bc200>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_setdefault'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_setdefault'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_setdefault'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_setdefault'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_setdefault'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_setdefault'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_setdefault'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac7e3b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...setdefault'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd506ec620> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd506ec620> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...setdefault'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_setdefault'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_setdefault'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_setdefault'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_setdefault at 0x00007fdd6a4d8ae8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDictObject.w_compile_module of <pypy.module.cpyext.test.test_dictobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_dictobject.AppTestDictObject object at 0x00007fdd505da138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd505da1a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> E test_setdefault() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_setdefault E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_setdefault(): module = self.import_extension('foo', [ ("setdefault", "METH_VARARGS", ''' PyObject *d, *key, *defaultobj, *val; if (!PyArg_ParseTuple(args, "OOO", &d, &key, &defaultobj)) return NULL; val = PyDict_SetDefault(d, key, defaultobj); Py_XINCREF(val); return val; ''')]) class Dict(dict): def setdefault(self, key, default): return 42 d = Dict() assert module.setdefault(d, 'x', 1) == 1 assert d['x'] == 1 try: test_setdefault() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> test_setdefault() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_setdefault module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestDictObject.test_update _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58790818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_update'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_update'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_update'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_update'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_update'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_update'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_update'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5900e278> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_update'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7af1e2a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7af1e2a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_update'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_update'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_update'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_update'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_update at 0x00007fdd6a4d8b60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDictObject.w_compile_module of <pypy.module.cpyext.test.test_dictobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_dictobject.AppTestDictObject object at 0x00007fdd79645210>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79645280> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> E test_update() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_update E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_update(): module = self.import_extension('foo', [ ("update", "METH_VARARGS", ''' if (PyDict_Update(PyTuple_GetItem(args, 0), PyTuple_GetItem(args, 1))) return NULL; Py_RETURN_NONE; ''')]) d = {"a": 1} module.update(d, {"c": 2}) assert d == dict(a=1, c=2) d = {"a": 1} raises(AttributeError, module.update, d, [("c", 2)]) try: test_update() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> test_update() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_update module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestDictObject.test_iter __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd68f93538>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iter'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iter'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iter'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b2c4390> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b2d0c20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b2d0c20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iter'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_iter'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_iter'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_iter at 0x00007fdd6a4d8bd8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDictObject.w_compile_module of <pypy.module.cpyext.test.test_dictobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_dictobject.AppTestDictObject object at 0x00007fdd6a862410>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a862608> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 142, in <module> E test_iter() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_iter E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_iter(): module = self.import_extension('foo', [ ("copy", "METH_O", ''' Py_ssize_t pos = 0; PyObject *key, *value; PyObject* copy = PyDict_New(); while (PyDict_Next(args, &pos, &key, &value)) { if (PyDict_SetItem(copy, key, value) < 0) { Py_DecRef(copy); return NULL; } } return copy; ''')]) d = {1: 'xyz', 3: 'abcd'} copy = module.copy(d) assert len(copy) == len(d) assert copy == d try: test_iter() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 142, in <module> test_iter() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_iter module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestDictObject.test_iterkeys ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd502d2110>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iterkeys'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iterkeys'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iterkeys'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iterkeys'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iterkeys'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iterkeys'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iterkeys'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58fdc8b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_iterkeys'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd504a6060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd504a6060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_iterkeys'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iterkeys'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_iterkeys'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_iterkeys'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_iterkeys at 0x00007fdd6a4d8c50> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDictObject.w_compile_module of <pypy.module.cpyext.test.test_dictobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_dictobject.AppTestDictObject object at 0x00007fdd7ad5c170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ad5c1e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> E test_iterkeys() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_iterkeys E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_iterkeys(): module = self.import_extension('foo', [ ("keys_and_values", "METH_O", ''' Py_ssize_t pos = 0; PyObject *key, *value, *values; PyObject* keys = PyList_New(0); while (PyDict_Next(args, &pos, &key, NULL)) { if (PyList_Append(keys, key) < 0) { Py_DecRef(keys); return NULL; } } pos = 0; values = PyList_New(0); while (PyDict_Next(args, &pos, NULL, &value)) { if (PyList_Append(values, value) < 0) { Py_DecRef(keys); Py_DecRef(values); return NULL; } } return Py_BuildValue("(NN)", keys, values); ''')]) d = {1: 'xyz', 3: 'abcd'} assert module.keys_and_values(d) == (list(d.keys()), list(d.values())) try: test_iterkeys() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> test_iterkeys() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_iterkeys module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestDictObject.test_typedict2 _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd590ab6a0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typedict2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typedict2'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typedict2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typedict2'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typedict2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typedict2'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typedict2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50630778> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._typedict2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58fae020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58fae020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._typedict2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typedict2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_typedict2'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_typedict2'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_typedict2 at 0x00007fdd6a4d8cc8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDictObject.w_compile_module of <pypy.module.cpyext.test.test_dictobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_dictobject.AppTestDictObject object at 0x00007fdd6a5ac170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a5ac1e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> E test_typedict2() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_typedict2 E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_typedict2(): module = self.import_extension('foo', [ ("get_type_dict", "METH_O", ''' PyObject* value = args->ob_type->tp_dict; if (value == NULL) value = Py_None; Py_INCREF(value); return value; '''), ]) d = module.get_type_dict(1) assert d['real'].__get__(1, 1) == 1 try: test_typedict2() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> test_typedict2() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_typedict2 module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestDictObject.test_advanced ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af2b448>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_advanced'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_advanced'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_advanced'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_advanced'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_advanced'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_advanced'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_advanced'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5900e3e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_advanced'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50520060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50520060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_advanced'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_advanced'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_advanced'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_advanced'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_advanced at 0x00007fdd6a4d8d40> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDictObject.w_compile_module of <pypy.module.cpyext.test.test_dictobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_dictobject.AppTestDictObject object at 0x00007fdd79645360>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79645520> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 187, in <module> E test_advanced() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_advanced E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_advanced(): module = self.import_extension('foo', [ ("dict_len", "METH_O", ''' int ret = args->ob_type->tp_as_mapping->mp_length(args); return PyLong_FromLong(ret); '''), ("dict_setitem", "METH_VARARGS", ''' int ret; PyObject * dict = PyTuple_GetItem(args, 0); if (PyTuple_Size(args) < 3 || !dict || !dict->ob_type->tp_as_mapping || !dict->ob_type->tp_as_mapping->mp_ass_subscript) return PyLong_FromLong(-1); ret = dict->ob_type->tp_as_mapping->mp_ass_subscript( dict, PyTuple_GetItem(args, 1), PyTuple_GetItem(args, 2)); return PyLong_FromLong(ret); '''), ("dict_delitem", "METH_VARARGS", ''' int ret; PyObject * dict = PyTuple_GetItem(args, 0); if (PyTuple_Size(args) < 2 || !dict || !dict->ob_type->tp_as_mapping || !dict->ob_type->tp_as_mapping->mp_ass_subscript) return PyLong_FromLong(-1); ret = dict->ob_type->tp_as_mapping->mp_ass_subscript( dict, PyTuple_GetItem(args, 1), NULL); return PyLong_FromLong(ret); '''), ("dict_next", "METH_VARARGS", ''' PyObject *key, *value; PyObject *arg = NULL; Py_ssize_t pos = 0; int ret = 0; if ((PyArg_ParseTuple(args, "|O", &arg))) { if (arg && PyDict_Check(arg)) { while (PyDict_Next(arg, &pos, &key, &value)) ret ++; /* test no crash if pos is not reset to 0*/ while (PyDict_Next(arg, &pos, &key, &value)) ret ++; } } return PyLong_FromLong(ret); '''), ("exhaust_pos", "METH_O", """ PyObject *key, *val; Py_ssize_t pos = 0; while (PyDict_Next(args, &pos, &key, &val)) { } return PyLong_FromLong(pos); """), ]) d = {'a': 1, 'b':2} assert module.dict_len(d) == 2 assert module.dict_setitem(d, 'a', 'c') == 0 assert d['a'] == 'c' assert module.dict_delitem(d, 'a') == 0 r = module.dict_next({'a': 1, 'b': 2}) assert r == 2 assert module.exhaust_pos({'a': 1}) == 1 try: test_advanced() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 187, in <module> test_advanced() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_advanced module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestDictObject.test_subclassing ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd688b44d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclassing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_subclassing'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclassing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_subclassing'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclassing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_subclassing'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclassing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b27cb10> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ubclassing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ac64220> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ac64220> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ubclassing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_subclassing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_subclassing'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_subclassing'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_subclassing at 0x00007fdd6a4d8db8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDictObject.w_compile_module of <pypy.module.cpyext.test.test_dictobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_dictobject.AppTestDictObject object at 0x00007fdd6aa5a330>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6aa5a3a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 184, in <module> E test_subclassing() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_subclassing E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_subclassing(): module = self.import_extension('foo', [ ("dict_setitem", "METH_VARARGS", """ PyObject *d, *key, *value; if (!PyArg_ParseTuple(args, "OOO", &d, &key, &value)) { return NULL; } if (PyDict_SetItem(d, key, value) < 0) { return NULL; } Py_RETURN_NONE; """), ("dict_delitem", "METH_VARARGS", """ PyObject *d, *key; if (!PyArg_ParseTuple(args, "OO", &d, &key)) { return NULL; } if (PyDict_DelItem(d, key) < 0) { return NULL; } Py_RETURN_NONE; """), ("dict_getitem", "METH_VARARGS", """ PyObject *d, *key, *result; if (!PyArg_ParseTuple(args, "OO", &d, &key)) { return NULL; } result = PyDict_GetItem(d, key); Py_XINCREF(result); return result; """), ]) class mydict(dict): def __setitem__(self, key, value): dict.__setitem__(self, key, 42) def __delitem__(self, key): dict.__setitem__(self, key, None) d = {} module.dict_setitem(d, 1, 2) assert d[1] == 2 d = mydict() d[1] = 2 assert d[1] == 42 module.dict_setitem(d, 2, 3) assert d[2] == 3 del d[2] assert d[2] is None module.dict_delitem(d, 2) assert 2 not in d class mydict2(dict): def __getitem__(self, key): return 42 d = mydict2() d[1] = 2 assert d[1] == 42 assert module.dict_getitem(d, 1) == 2 try: test_subclassing() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 184, in <module> test_subclassing() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_subclassing module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestDictObject.test_getitem_error _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a9bc7a0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_error'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getitem_error'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_error'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getitem_error'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_error'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getitem_error'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_error'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58fcc7a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...item_error'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ab3c060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ab3c060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...item_error'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_error'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_getitem_error'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_getitem_error'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_getitem_error at 0x00007fdd6a4d8e30> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDictObject.w_compile_module of <pypy.module.cpyext.test.test_dictobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_dictobject.AppTestDictObject object at 0x00007fdd68887bb0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd68887c20> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> E test_getitem_error() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getitem_error E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_getitem_error(): module = self.import_extension('foo', [ ("dict_getitem", "METH_VARARGS", """ PyObject *d, *key, *result; if (!PyArg_ParseTuple(args, "OO", &d, &key)) { return NULL; } result = PyDict_GetItem(d, key); if (!result) Py_RETURN_NONE; Py_XINCREF(result); return result; """), ]) assert module.dict_getitem(42, 43) is None assert module.dict_getitem({}, []) is None try: test_getitem_error() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> test_getitem_error() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getitem_error module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestDictObject.test_contains ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_contains'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_contains'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_contains'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_contains'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_contains'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_contains'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_contains'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd506ba2a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_contains'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a95e020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a95e020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_contains'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_contains'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_contains'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_contains'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_contains at 0x00007fdd6a4d8ea8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestDictObject.w_compile_module of <pypy.module.cpyext.test.test_dictobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_dictobject.AppTestDictObject object at 0x00007fdd594a2448>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd594a2560> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 146, in <module> E test_contains() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_contains E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_contains(): module = self.import_extension('foo', [ ("contains", "METH_VARARGS", """ PyObject *d, *key; if (!PyArg_ParseTuple(args, "OO", &d, &key)) { return NULL; } int ret = PyDict_Contains(d, key); if (ret < 0) return NULL; return PyLong_FromLong(ret); """), ]) class Unhashable(): __hash__ = None raises(TypeError, module.contains, {}, Unhashable()) class C(dict): def __contains__(self, key): return dict.__contains__(self, key) ret = module.contains(C(), 1) assert ret == 0 try: test_contains() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 146, in <module> test_contains() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_contains module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestCall.test_run_simple_string ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd5887af98>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_run_simple_string'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_run_simple_string'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_run_simple_string'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_run_simple_string'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_run_simple_string'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_run_simple_string'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_run_simple_string'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5900e3e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ple_string'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd586ac160> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd586ac160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ple_string'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_run_simple_string'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_run_simple_string'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_run_simple_string'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_run_simple_string at 0x00007fdd6a4d96a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCall.w_compile_module of <pypy.module.cpyext.test.test_eval.AppTestCall object...d AppTestCall.w_import_extension of <pypy.module.cpyext.test.test_eval.AppTestCall object at 0x00007fdd68093f68>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd795e8918> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> E test_run_simple_string() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_run_simple_string E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_run_simple_string(): module = self.import_extension('foo', [ ("run_ok", "METH_NOARGS", ''' return PyLong_FromLong(PyRun_SimpleString("42 * 43")); ''' ), ("run_err", "METH_NOARGS", ''' /* On error PyRun_SimpleString calls PyErr_Print (clearing the indicator) and returns -1, rather than propagating. */ return PyLong_FromLong(PyRun_SimpleString("4..3 * 43")); ''' ), ]) assert module.run_ok() == 0 assert module.run_err() == -1 try: test_run_simple_string() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> test_run_simple_string() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_run_simple_string module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestCall.test_eval_code_ex _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a4d9448>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_eval_code_ex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_eval_code_ex'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_eval_code_ex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_eval_code_ex'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_eval_code_ex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_eval_code_ex'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_eval_code_ex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b27cc28> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...al_code_ex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50626060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50626060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...al_code_ex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_eval_code_ex'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_eval_code_ex'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_eval_code_ex'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_eval_code_ex at 0x00007fdd6a4d9718> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCall.w_compile_module of <pypy.module.cpyext.test.test_eval.AppTestCall object...d AppTestCall.w_import_extension of <pypy.module.cpyext.test.test_eval.AppTestCall object at 0x00007fdd505d0170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd505d01e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 191, in <module> E test_eval_code_ex() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_eval_code_ex E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_eval_code_ex(): module = self.import_extension('foo', [ ("eval_code_ex", "METH_VARARGS", """ PyObject *result = NULL; PyObject *code, *globals, *locals = NULL, *argtuple = NULL, *kwargs = NULL, *defaults = NULL, *kw_defaults = NULL, *closure = NULL; PyObject **c_kwargs = NULL; if (!PyArg_ParseTuple(args, "OO|OO!O!O!OO:eval_code_ex", &code, &globals, &locals, &PyTuple_Type, &argtuple, &PyDict_Type, &kwargs, &PyTuple_Type, &defaults, &kw_defaults, &closure)) return NULL; PyObject **c_args = NULL; Py_ssize_t c_args_len = 0; if (argtuple) { c_args = &PyTuple_GET_ITEM(argtuple, 0); c_args_len = PyTuple_Size(argtuple); } Py_ssize_t c_kwargs_len = 0; if (kwargs) { c_kwargs_len = PyDict_Size(kwargs); if (c_kwargs_len > 0) { Py_ssize_t i = 0, pos = 0; c_kwargs = PyMem_NEW(PyObject*, 2 * c_kwargs_len); if (!c_kwargs) { PyErr_NoMemory(); return NULL; } while (PyDict_Next(kwargs, &pos, &c_kwargs[i], &c_kwargs[i + 1])) i += 2; c_kwargs_len = i / 2; } } PyObject **c_defaults = NULL; Py_ssize_t c_defaults_len = 0; if (defaults) { c_defaults = &PyTuple_GET_ITEM(defaults, 0); c_defaults_len = PyTuple_Size(defaults); } result = PyEval_EvalCodeEx(code, globals, locals, c_args, (int)c_args_len, c_kwargs, (int)c_kwargs_len, c_defaults, (int)c_defaults_len, kw_defaults, closure); if (c_kwargs) PyMem_DEL(c_kwargs); return result; """), ]) def f(): return a # noqa: F821 -- looked up in the passed globals assert module.eval_code_ex(f.__code__, {'a': 1}) == 1 raises(NameError, module.eval_code_ex, f.__code__, {}) def g(a, b, c): return a assert module.eval_code_ex(g.__code__, {}, {}, (1, 2, 3)) == 1 raises(TypeError, module.eval_code_ex, g.__code__, {}, {}, (1, 2)) def h(a, b, c): return c # defaults fill the trailing parameters assert module.eval_code_ex(h.__code__, {}, {}, (1, 2), {}, (99,)) == 99 # non-optimized (exec) code runs against the given locals mapping code = compile("x = a + 1", "<test>", "exec") loc = {} module.eval_code_ex(code, {'a': 10}, loc) assert loc['x'] == 11 try: test_eval_code_ex() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 191, in <module> test_eval_code_ex() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_eval_code_ex module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestCall.test_CallFunction _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b1404d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunction'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CallFunction'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunction'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CallFunction'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunction'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CallFunction'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunction'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd590222a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...llFunction'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b096020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b096020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...llFunction'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunction'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_CallFunction'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_CallFunction'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_CallFunction at 0x00007fdd6a4d9790> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCall.w_compile_module of <pypy.module.cpyext.test.test_eval.AppTestCall object...d AppTestCall.w_import_extension of <pypy.module.cpyext.test.test_eval.AppTestCall object at 0x00007fdd6936e170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6936e1e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> E test_CallFunction() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_CallFunction E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_CallFunction(): module = self.import_extension('foo', [ ("call_func", "METH_VARARGS", """ return PyObject_CallFunction(PyTuple_GetItem(args, 0), "siiiiO", "text", 42, -41, 40, -39, Py_None); """), ("call_method", "METH_VARARGS", """ return PyObject_CallMethod(PyTuple_GetItem(args, 0), "count", "s", "t"); """), ]) def f(*args): return args assert module.call_func(f) == ("text", 42, -41, 40, -39, None) assert module.call_method("text") == 2 try: test_CallFunction() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> test_CallFunction() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_CallFunction module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________ AppTestCall.test_CallFunction_PY_SSIZE_T_CLEAN ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59092638>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunction_PY_SSIZE_T_CLEAN'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CallFunction_PY_SSIZE_T_CLEAN'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunction_PY_SSIZE_T_CLEAN'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CallFunction_PY_SSIZE_T_CLEAN'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunction_PY_SSIZE_T_CLEAN'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CallFunction_PY_SSIZE_T_CLEAN'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunction_PY_SSIZE_T_CLEAN'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abe6570> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ZE_T_CLEAN'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e0ac20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e0ac20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ZE_T_CLEAN'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunction_PY_SSIZE_T_CLEAN'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_CallFunction_PY_SSIZE_T_CLEAN'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_CallFunction_PY_SSIZE_T_CLEAN'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_CallFunction_PY_SSIZE_T_CLEAN at 0x00007fdd6a4d9808> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCall.w_compile_module of <pypy.module.cpyext.test.test_eval.AppTestCall object...d AppTestCall.w_import_extension of <pypy.module.cpyext.test.test_eval.AppTestCall object at 0x00007fdd59062f38>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd59062fa8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> E test_CallFunction_PY_SSIZE_T_CLEAN() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_CallFunction_PY_SSIZE_T_CLEAN E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_CallFunction_PY_SSIZE_T_CLEAN(): module = self.import_extension('foo', [ ("call_func", "METH_VARARGS", """ return PyObject_CallFunction(PyTuple_GetItem(args, 0), "s#s#", "text", (Py_ssize_t)3, "othertext", (Py_ssize_t)6); """), ("call_method", "METH_VARARGS", """ return PyObject_CallMethod(PyTuple_GetItem(args, 0), "find", "s#", "substring", (Py_ssize_t)6); """), ], PY_SSIZE_T_CLEAN=True) def f(*args): return args assert module.call_func(f) == ("tex", "othert") assert module.call_method("<<subst>>") == -1 assert module.call_method("<<substr>>") == 2 try: test_CallFunction_PY_SSIZE_T_CLEAN() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> test_CallFunction_PY_SSIZE_T_CLEAN() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_CallFunction_PY_SSIZE_T_CLEAN module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestCall.test_CallFunctionObjArgs _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunctionObjArgs'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CallFunctionObjArgs'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunctionObjArgs'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CallFunctionObjArgs'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunctionObjArgs'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CallFunctionObjArgs'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunctionObjArgs'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d545e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ionObjArgs'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5871e060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5871e060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ionObjArgs'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CallFunctionObjArgs'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_CallFunctionObjArgs'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_CallFunctionObjArgs'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_CallFunctionObjArgs at 0x00007fdd6a4d9880> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCall.w_compile_module of <pypy.module.cpyext.test.test_eval.AppTestCall object...d AppTestCall.w_import_extension of <pypy.module.cpyext.test.test_eval.AppTestCall object at 0x00007fdd5131e5d0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5131e640> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 191, in <module> E test_CallFunctionObjArgs() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_CallFunctionObjArgs E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_CallFunctionObjArgs(): module = self.import_extension('foo', [ ("call_func", "METH_VARARGS", """ PyObject *t = PyUnicode_FromString("t"); PyObject *res = PyObject_CallFunctionObjArgs( PyTuple_GetItem(args, 0), Py_None, NULL); Py_DECREF(t); return res; """), ("call_method", "METH_VARARGS", """ PyObject *t = PyUnicode_FromString("t"); PyObject *count = PyUnicode_FromString("count"); PyObject *res = PyObject_CallMethodObjArgs( PyTuple_GetItem(args, 0), count, t, NULL); Py_DECREF(t); Py_DECREF(count); return res; """), ("test_callnoarg", "METH_VARARGS", ''' PyObject *func = NULL; if (!PyArg_ParseTuple(args, "O", &func)) { return NULL; } return PyObject_CallNoArgs(func); '''), ("test_callonearg", "METH_VARARGS", ''' PyObject *func = NULL, *arg = NULL; if (!PyArg_ParseTuple(args, "OO", &func, &arg)) { return NULL; } return PyObject_CallOneArg(func, arg); '''), ("test_callmethod_noargs", "METH_VARARGS", ''' PyObject *func = NULL, *arg = NULL; if (!PyArg_ParseTuple(args, "OO", &func, &arg)) { return NULL; } return PyObject_CallMethodNoArgs(func, arg); '''), ("test_callmethod_onearg", "METH_VARARGS", ''' PyObject *func = NULL, *name = NULL, *arg = NULL; if (!PyArg_ParseTuple(args, "OOO", &func, &name, &arg)) { return NULL; } return PyObject_CallMethodOneArg(func, name, arg); '''), ]) def f(*args): return args class A(): def meth(self, *args): return args a = A() assert module.call_func(f) == (None,) assert module.call_method("text") == 2 module.test_callnoarg(f) == () module.test_callonearg(f, 4) == (4,) assert module.test_callmethod_noargs(a, "meth") == () assert module.test_callmethod_onearg(a, "meth", 4) == (4,) try: test_CallFunctionObjArgs() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 191, in <module> test_CallFunctionObjArgs() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_CallFunctionObjArgs module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestCall.test_CompileString_and_Exec ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b1e4ea8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CompileString_and_Exec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CompileString_and_Exec'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CompileString_and_Exec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CompileString_and_Exec'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CompileString_and_Exec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_CompileString_and_Exec'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CompileString_and_Exec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abec5c0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...g_and_Exec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505cc020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505cc020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...g_and_Exec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_CompileString_and_Exec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_CompileString_and_Exec'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_CompileString_and_Exec'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_CompileString_and_Exec at 0x00007fdd6a4d98f8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCall.w_compile_module of <pypy.module.cpyext.test.test_eval.AppTestCall object...d AppTestCall.w_import_extension of <pypy.module.cpyext.test.test_eval.AppTestCall object at 0x00007fdd6a7a8f70>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a7a8fe0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 159, in <module> E test_CompileString_and_Exec() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_CompileString_and_Exec E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_CompileString_and_Exec(): import sys module = self.import_extension('foo', [ ("compile_string", "METH_NOARGS", """ return Py_CompileString( "f = lambda x: x+5", "someFile", Py_file_input); """), ("exec_code", "METH_O", """ return PyImport_ExecCodeModule("cpyext_test_modname", args); """), ("exec_code_ex", "METH_O", """ return PyImport_ExecCodeModuleEx("cpyext_test_modname", args, "otherFile"); """), ]) code = module.compile_string() assert code.co_filename == "someFile" assert code.co_name == "<module>" mod = module.exec_code(code) assert mod.__name__ == "cpyext_test_modname" assert mod.__file__ == "someFile" print(dir(mod)) print(mod.__dict__) assert mod.f(42) == 47 mod = module.exec_code_ex(code) assert mod.__name__ == "cpyext_test_modname" assert mod.__file__ == "otherFile" print(dir(mod)) print(mod.__dict__) assert mod.f(42) == 47 # Clean-up del sys.modules['cpyext_test_modname'] try: test_CompileString_and_Exec() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 159, in <module> test_CompileString_and_Exec() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_CompileString_and_Exec module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestCall.test_merge_compiler_flags _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b1404d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_merge_compiler_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_merge_compiler_flags'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_merge_compiler_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_merge_compiler_flags'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_merge_compiler_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_merge_compiler_flags'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_merge_compiler_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508c4138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...iler_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5874cce0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5874cce0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...iler_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_merge_compiler_flags'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_merge_compiler_flags'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_merge_compiler_flags'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_merge_compiler_flags at 0x00007fdd6a4d9970> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCall.w_compile_module of <pypy.module.cpyext.test.test_eval.AppTestCall object...d AppTestCall.w_import_extension of <pypy.module.cpyext.test.test_eval.AppTestCall object at 0x00007fdd69384138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd693841a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> E test_merge_compiler_flags() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_merge_compiler_flags E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_merge_compiler_flags(): import sys module = self.import_extension('foo', [ ("get_flags", "METH_NOARGS", """ PyCompilerFlags flags; int result; flags.cf_flags = 0; result = PyEval_MergeCompilerFlags(&flags); return Py_BuildValue("ii", result, flags.cf_flags); """), ]) assert module.get_flags() == (0, 0) ns = {'module': module} if not hasattr(sys, 'pypy_version_info'): # no barry_as_FLUFL on pypy exec("""from __future__ import barry_as_FLUFL \nif 1: def nested_flags(): return module.get_flags()""", ns) assert ns['nested_flags']() == (1, 0x40000) # the division future should have no effect on Python 3 exec("""from __future__ import division \nif 1: def nested_flags(): return module.get_flags()""", ns) assert ns['nested_flags']() == (0, 0) try: test_merge_compiler_flags() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> test_merge_compiler_flags() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_merge_compiler_flags module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestCall.test_build_class _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b336f98>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_build_class'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_build_class'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_build_class'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_build_class'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_build_class'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_build_class'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_build_class'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abe7100> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...uild_class'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd592c1b60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd592c1b60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...uild_class'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_build_class'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_build_class'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_build_class'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = 'test_build_class(self): \n # make sure PyObject_Call generates a proper PyTypeObject,\n # along the way veri... return s\n \n assert run_async(list1()) == ([], [0, 1, 2])\n assert run_async(list2()) == ([], [0, 1, 2])' usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCall.w_compile_module of <pypy.module.cpyext.test.test_eval.AppTestCall object...d AppTestCall.w_import_extension of <pypy.module.cpyext.test.test_eval.AppTestCall object at 0x00007fdd6acb27c8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b11fe88> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 256, in <module> E test_build_class() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_build_class E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_build_class(): # make sure PyObject_Call generates a proper PyTypeObject, # along the way verify that userslot has iter and next module = self.import_extension('foo', [ ("object_call", "METH_O", ''' return PyObject_Call((PyObject*)&PyType_Type, args, NULL); '''), ('iter', "METH_O", ''' if (NULL == args->ob_type->tp_iter) { PyErr_SetString(PyExc_TypeError, "NULL tp_iter"); return NULL; } return args->ob_type->tp_iter(args); '''), ('next', "METH_O", ''' if (NULL == args->ob_type->tp_iternext) { PyErr_SetString(PyExc_TypeError, "NULL tp_iternext"); return NULL; } return args->ob_type->tp_iternext(args); '''), ('await_', "METH_O", ''' if (NULL == args->ob_type->tp_as_async->am_await) { PyErr_SetString(PyExc_TypeError, "NULL am_await"); return NULL; } return args->ob_type->tp_as_async->am_await(args); '''), ('aiter', "METH_O", ''' if (NULL == args->ob_type->tp_as_async->am_aiter) { PyErr_SetString(PyExc_TypeError, "NULL am_aiter"); return NULL; } return args->ob_type->tp_as_async->am_aiter(args); '''), ('anext', "METH_O", ''' if (NULL == args->ob_type->tp_as_async->am_anext) { PyErr_SetString(PyExc_TypeError, "NULL am_anext"); return NULL; } return args->ob_type->tp_as_async->am_anext(args); '''), ]) def __init__(self, N): self.N = N self.i = 0 def __iter__(self): return self def __next__(self): if self.i < self.N: i = self.i self.i += 1 return i raise StopIteration d = {'__init__': __init__, '__iter__': __iter__, 'next': __next__, '__next__': __next__} C = module.object_call(('Iterable', (object,), d)) c = C(5) i = module.iter(c) out = [] try: while 1: out.append(module.next(i)) except StopIteration: pass assert out == [0, 1, 2, 3, 4] def run_async(coro): buffer = [] result = None while True: try: buffer.append(coro.send(None)) except StopIteration as ex: result = ex.value break return buffer, result def __await__(self): yield 42 return 100 Awaitable = module.object_call(( 'Awaitable', (object,), {'__await__': __await__})) async def wrapper(): return await Awaitable() assert run_async(module.await_(Awaitable())) == ([42], 100) assert run_async(wrapper()) == ([42], 100) def __aiter__(self): return self async def __anext__(self): if self.i < self.N: res = self.i self.i += 1 return res raise StopAsyncIteration AIter = module.object_call(('AIter', (object,), {'__init__': __init__, '__aiter__': __aiter__, '__anext__': __anext__})) async def list1(): s = [] async for i in AIter(3): s.append(i) return s async def list2(): s = [] ait = module.aiter(AIter(3)) try: while True: s.append(await module.anext(ait)) except StopAsyncIteration: return s assert run_async(list1()) == ([], [0, 1, 2]) assert run_async(list2()) == ([], [0, 1, 2]) try: test_build_class() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 256, in <module> test_build_class() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_build_class module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________________ AppTestCall.test_getframe ___________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aada098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getframe'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getframe'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getframe'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getframe'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getframe'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getframe'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getframe'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f9e340> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_getframe'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79787e20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79787e20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_getframe'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getframe'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_getframe'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_getframe'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_getframe at 0x00007fdd6a4d9ad8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCall.w_compile_module of <pypy.module.cpyext.test.test_eval.AppTestCall object...d AppTestCall.w_import_extension of <pypy.module.cpyext.test.test_eval.AppTestCall object at 0x00007fdd50f9c330>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd50f9c3a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> E test_getframe() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_getframe E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_getframe(): import sys module = self.import_extension('foo', [ ("getframe1", "METH_NOARGS", """ PyFrameObject *x = PyEval_GetFrame(); Py_INCREF(x); return (PyObject *)x; """),], prologue="#include <frameobject.h>\n") res = module.getframe1() assert res is sys._getframe(0) try: test_getframe() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in <module> test_getframe() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_getframe module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestCall.test_getbuiltins _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b1e4ea8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getbuiltins'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getbuiltins'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getbuiltins'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getbuiltins'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getbuiltins'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getbuiltins'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getbuiltins'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58cde2c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...etbuiltins'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58c7a060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58c7a060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...etbuiltins'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getbuiltins'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_getbuiltins'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_getbuiltins'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_getbuiltins at 0x00007fdd6a4d9b50> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCall.w_compile_module of <pypy.module.cpyext.test.test_eval.AppTestCall object...d AppTestCall.w_import_extension of <pypy.module.cpyext.test.test_eval.AppTestCall object at 0x00007fdd7b1aa170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b1aa1e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> E test_getbuiltins() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getbuiltins E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_getbuiltins(): module = self.import_extension('foo', [ ("getbuiltins", "METH_NOARGS", """ /* borrowed ref */ PyObject *ret = PyEval_GetBuiltins(); Py_INCREF(ret); return ret; """)]) builtins = module.getbuiltins() assert builtins is __builtins__.__dict__ def cpybuiltins(): return module.getbuiltins() d = dict(__builtins__ = {'sum': sum}, cpybuiltins=cpybuiltins) result = eval("cpybuiltins()", d, d) assert len(result) == len(builtins) try: test_getbuiltins() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> test_getbuiltins() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getbuiltins module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestExceptions.test_OSError_aliases ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59189e20>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_OSError_aliases'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_OSError_aliases'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_OSError_aliases'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_OSError_aliases'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_OSError_aliases'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_OSError_aliases'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_OSError_aliases'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d545e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...or_aliases'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aeb2560> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aeb2560> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...or_aliases'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_OSError_aliases'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_OSError_aliases'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_OSError_aliases'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_OSError_aliases at 0x00007fdd58ca4458> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestExceptions.w_compile_module of <pypy.module.cpyext.test.test_exception.AppTest...ns.w_import_extension of <pypy.module.cpyext.test.test_exception.AppTestExceptions object at 0x00007fdd7acfa6e8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7acfa8e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_OSError_aliases() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_OSError_aliases E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_OSError_aliases(): module = self.import_extension('foo', [ ("get_aliases", "METH_NOARGS", """ return PyTuple_Pack(2, PyExc_EnvironmentError, PyExc_IOError); """)]) assert module.get_aliases() == (OSError, OSError) try: test_OSError_aliases() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_OSError_aliases() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_OSError_aliases module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestExceptions.test_implicit_chaining ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_implicit_chaining'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_implicit_chaining'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_implicit_chaining'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_implicit_chaining'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_implicit_chaining'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_implicit_chaining'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_implicit_chaining'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d789d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_chaining'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ad114a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ad114a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_chaining'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_implicit_chaining'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_implicit_chaining'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_implicit_chaining'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_implicit_chaining at 0x00007fdd58ca44d0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestExceptions.w_compile_module of <pypy.module.cpyext.test.test_exception.AppTest...ns.w_import_extension of <pypy.module.cpyext.test.test_exception.AppTestExceptions object at 0x00007fdd591dc480>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd591dc720> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 142, in <module> E test_implicit_chaining() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_implicit_chaining E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_implicit_chaining(): module = self.import_extension('foo', [ ("raise_exc", "METH_NOARGS", """ PyObject *ev, *et, *tb; PyObject *ev0, *et0, *tb0; PyErr_GetExcInfo(&ev0, &et0, &tb0); PyErr_SetString(PyExc_ValueError, "foo"); // simplified copy of __Pyx_GetException PyErr_Fetch(&et, &ev, &tb); PyErr_NormalizeException(&et, &ev, &tb); if (tb) PyException_SetTraceback(ev, tb); PyErr_SetExcInfo(et, ev, tb); PyErr_SetString(PyExc_TypeError, "bar"); PyErr_SetExcInfo(ev0, et0, tb0); return NULL; """)]) excinfo = raises(TypeError, module.raise_exc) assert excinfo.value.__context__ try: test_implicit_chaining() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 142, in <module> test_implicit_chaining() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_implicit_chaining module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestFileObject.test_defaultencoding ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b1e4ea8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_defaultencoding'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_defaultencoding'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_defaultencoding'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_defaultencoding'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_defaultencoding'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_defaultencoding'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_defaultencoding'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d682c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ltencoding'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a2fa8e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a2fa8e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ltencoding'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_defaultencoding'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_defaultencoding'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_defaultencoding'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_defaultencoding at 0x00007fdd58ca4818> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFileObject.w_compile_module of <pypy.module.cpyext.test.test_fileobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_fileobject.AppTestFileObject object at 0x00007fdd7addc170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7addc368> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_defaultencoding() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_defaultencoding E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_defaultencoding(): import sys module = self.import_extension('foo', [ ("defenc", "METH_NOARGS", """ return PyUnicode_FromString(Py_FileSystemDefaultEncoding); """), ]) assert module.defenc() == sys.getfilesystemencoding() try: test_defaultencoding() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_defaultencoding() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_defaultencoding module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestFloatObject.test_fromstring ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b3366b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromstring'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromstring'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromstring'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd78cabc18> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a8403e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a8403e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fromstring'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fromstring'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fromstring at 0x00007fdd58ca4a70> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFloatObject.w_compile_module of <pypy.module.cpyext.test.test_floatobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_floatobject.AppTestFloatObject object at 0x00007fdd6aa5a448>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6aa5a800> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> E test_fromstring() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromstring E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fromstring(): module = self.import_extension('foo', [ ("from_string", "METH_NOARGS", """ PyObject* str = PyUnicode_FromString("1234.56"); PyObject* res = PyFloat_FromString(str); Py_DECREF(str); return res; """), ]) assert module.from_string() == 1234.56 assert type(module.from_string()) is float try: test_fromstring() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> test_fromstring() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromstring module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestFloatObject.test_return_nan ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_return_nan'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_return_nan'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_return_nan'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d54b38> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...return_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5850f8e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5850f8e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...return_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_return_nan'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_return_nan'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_return_nan at 0x00007fdd58ca4ae8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFloatObject.w_compile_module of <pypy.module.cpyext.test.test_floatobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_floatobject.AppTestFloatObject object at 0x00007fdd7add0a68>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7add0ad8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> E test_return_nan() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_return_nan E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_return_nan(): import math module = self.import_extension('foo', [ ("return_nan", "METH_NOARGS", "Py_RETURN_NAN;"), ]) assert math.isnan(module.return_nan()) try: test_return_nan() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> test_return_nan() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_return_nan module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestFloatObject.test_return_inf ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59189e20>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_inf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_return_inf'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_inf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_return_inf'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_inf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_return_inf'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_inf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac70e08> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...return_inf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b32aa20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b32aa20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...return_inf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_inf'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_return_inf'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_return_inf'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_return_inf at 0x00007fdd58ca4b60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFloatObject.w_compile_module of <pypy.module.cpyext.test.test_floatobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_floatobject.AppTestFloatObject object at 0x00007fdd7ae52b48>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ae52bf0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> E test_return_inf() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_return_inf E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_return_inf(): import math module = self.import_extension('foo', [ ("return_inf", "METH_NOARGS", "Py_RETURN_INF(10);"), ]) inf = module.return_inf() assert inf > 0 assert math.isinf(inf) try: test_return_inf() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> test_return_inf() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_return_inf module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________ AppTestFloatObject.test_return_inf_negative __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aada2f0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_inf_negative'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_return_inf_negative'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_inf_negative'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_return_inf_negative'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_inf_negative'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_return_inf_negative'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_inf_negative'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d684a8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...f_negative'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd688c0420> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd688c0420> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...f_negative'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_return_inf_negative'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_return_inf_negative'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_return_inf_negative'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_return_inf_negative at 0x00007fdd58ca4bd8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFloatObject.w_compile_module of <pypy.module.cpyext.test.test_floatobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_floatobject.AppTestFloatObject object at 0x00007fdd7addc448>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7addc5d0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> E test_return_inf_negative() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_return_inf_negative E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_return_inf_negative(): import math module = self.import_extension('foo', [ ("return_neginf", "METH_NOARGS", "Py_RETURN_INF(-10);"), ]) neginf = module.return_neginf() assert neginf < 0 assert math.isinf(neginf) try: test_return_inf_negative() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> test_return_inf_negative() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_return_inf_negative module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________ AppTestFloatObject.test_macro_accepts_wrong_pointer_type ___________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b3366b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macro_accepts_wrong_pointer_typ...l__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macro_accepts_wrong_pointer_type'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macro_accepts_wrong_pointer_typ...l__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macro_accepts_wrong_pointer_type'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macro_accepts_wrong_pointer_typ...l__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_macro_accepts_wrong_pointer_type'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macro_accepts_wrong_pointer_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abec7f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...inter_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e4a060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e4a060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...inter_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_macro_accepts_wrong_pointer_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_macro_accepts_wrong_pointer_type'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_macro_accepts_wrong_pointer_type'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_macro_accepts_wrong_pointer_type at 0x00007fdd58ca4c50> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFloatObject.w_compile_module of <pypy.module.cpyext.test.test_floatobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_floatobject.AppTestFloatObject object at 0x00007fdd51676170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd516761e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> E test_macro_accepts_wrong_pointer_type() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_macro_accepts_wrong_pointer_type E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_macro_accepts_wrong_pointer_type(): module = self.import_extension('foo', [ ("test_macros", "METH_NOARGS", """ PyObject* o = PyFloat_FromDouble(1.0); // no PyFloatObject char* dumb_pointer = (char*)o; PyFloat_AS_DOUBLE(o); PyFloat_AS_DOUBLE(dumb_pointer); Py_RETURN_NONE;"""), ]) try: test_macro_accepts_wrong_pointer_type() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> test_macro_accepts_wrong_pointer_type() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_macro_accepts_wrong_pointer_type module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestFloatObject.test_PyFloat_Check _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59189e20>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyFloat_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyFloat_Check'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyFloat_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyFloat_Check'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyFloat_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyFloat_Check'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyFloat_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f941b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...loat_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ad08060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ad08060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...loat_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyFloat_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_PyFloat_Check'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_PyFloat_Check'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_PyFloat_Check at 0x00007fdd58ca4cc8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFloatObject.w_compile_module of <pypy.module.cpyext.test.test_floatobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_floatobject.AppTestFloatObject object at 0x00007fdd7add0b80>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7add0bf0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> E test_PyFloat_Check() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyFloat_Check E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_PyFloat_Check(): module = self.import_extension('foo', [ ("test", "METH_NOARGS", """ PyObject* pyobj = PyFloat_FromDouble(1.0); PyFloatObject* pfo = (PyFloatObject*)pyobj; int res = (PyFloat_Check(pyobj) + PyFloat_CheckExact(pyobj) * 10 + PyFloat_Check(pfo) * 100 + PyFloat_CheckExact(pfo) * 1000); Py_DecRef(pyobj); return PyLong_FromLong(res);"""), ]) assert module.test() == 1111 try: test_PyFloat_Check() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> test_PyFloat_Check() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyFloat_Check module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestFloatObject.test_pymath_consts _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pymath_consts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pymath_consts'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pymath_consts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pymath_consts'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pymath_consts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pymath_consts'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pymath_consts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b2c48b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ath_consts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50564060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50564060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ath_consts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pymath_consts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pymath_consts'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pymath_consts'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pymath_consts at 0x00007fdd58ca4d40> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFloatObject.w_compile_module of <pypy.module.cpyext.test.test_floatobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_floatobject.AppTestFloatObject object at 0x00007fdd6a7c41e0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a7c4250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> E test_pymath_consts() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in test_pymath_consts E module = self.import_extension('foo_%s' % const_name, [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pymath_consts(): # test preprocessor constants in their string form to avoid # floating-point conversion issues (and to avoid having to # conditionalize on compiler support for long double) for const_name, const_strval in [ ('Py_MATH_PIl', b"3.1415926535897932384626433832795029L"), ('Py_MATH_PI', b"3.14159265358979323846"), ('Py_MATH_El', b"2.7182818284590452353602874713526625L"), ('Py_MATH_E', b"2.7182818284590452354"), ('Py_MATH_TAU', b"6.2831853071795864769252867665590057683943L"), ]: module = self.import_extension('foo_%s' % const_name, [ ("test", "METH_NOARGS", """ #define xstr(s) str(s) #define str(s) #s return PyBytes_FromString(xstr(%s));""" % const_name) ]) assert module.test() == const_strval try: test_pymath_consts() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> test_pymath_consts() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in test_pymath_consts module = self.import_extension('foo_%s' % const_name, [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestFloatObject.test_Py_IS _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aada2f0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_IS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_IS'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_IS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_IS'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_IS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_IS'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_IS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d68660> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_Py_IS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5013e620> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5013e620> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_Py_IS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_IS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_Py_IS'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_Py_IS'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_Py_IS at 0x00007fdd58ca4db8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFloatObject.w_compile_module of <pypy.module.cpyext.test.test_floatobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_floatobject.AppTestFloatObject object at 0x00007fdd7addc8e0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7addc950> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 156, in <module> E test_Py_IS() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_Py_IS E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_Py_IS(): module = self.import_extension('foo', [ ("test_nan", "METH_O", """ double d = PyFloat_AsDouble(args); return PyBool_FromLong(Py_IS_NAN(d)); """), ("test_inf", "METH_O", """ double d = PyFloat_AsDouble(args); return PyBool_FromLong(Py_IS_INFINITY(d)); """), ("test_finite", "METH_O", """ double d = PyFloat_AsDouble(args); return PyBool_FromLong(Py_IS_FINITE(d)); """), ]) assert not module.test_nan(0) assert not module.test_nan(1) assert not module.test_nan(-1) assert not module.test_nan(float('inf')) assert module.test_nan(float('nan')) assert not module.test_inf(0) assert not module.test_inf(1) assert not module.test_inf(-1) assert not module.test_inf(float('nan')) assert module.test_inf(float('inf')) assert module.test_inf(float('-inf')) assert module.test_finite(0) assert module.test_finite(1) assert module.test_finite(-1) assert not module.test_finite(float('nan')) assert not module.test_finite(float('inf')) assert not module.test_finite(float('-inf')) try: test_Py_IS() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 156, in <module> test_Py_IS() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_Py_IS module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestFloatObject.test_Py_Float_AsDouble ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59092638>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_Float_AsDouble'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_Float_AsDouble'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_Float_AsDouble'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_Float_AsDouble'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_Float_AsDouble'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_Float_AsDouble'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_Float_AsDouble'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd505dc0c0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_AsDouble'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abf6be0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abf6be0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_AsDouble'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_Float_AsDouble'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_Py_Float_AsDouble'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_Py_Float_AsDouble'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_Py_Float_AsDouble at 0x00007fdd58ca4e30> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFloatObject.w_compile_module of <pypy.module.cpyext.test.test_floatobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_floatobject.AppTestFloatObject object at 0x00007fdd6ac14138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ac141a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> E test_Py_Float_AsDouble() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_Py_Float_AsDouble E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_Py_Float_AsDouble(): import warnings module = self.import_extension('foo', [ ("test", "METH_O", """ double d = PyFloat_AsDouble(args); if (PyErr_Occurred()) { return NULL; } return PyFloat_FromDouble(d); """), ]) try: module.test([]) except Exception as e: print(str(e)) assert str(e) == 'must be real number, not list' else: assert False class Floatsub(float): pass class BadFloat: def __float__(self): return Floatsub(4.25) with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always", DeprecationWarning) res = module.test(BadFloat()) assert res == 4.25 assert len(w) == 1 assert "strict subclass" in str(w[0]), str(w[0]) try: test_Py_Float_AsDouble() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> test_Py_Float_AsDouble() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_Py_Float_AsDouble module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestFloatObject.test_Py_HUGE_VAL ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_HUGE_VAL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_HUGE_VAL'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_HUGE_VAL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_HUGE_VAL'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_HUGE_VAL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_HUGE_VAL'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_HUGE_VAL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508d0a98> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...y_HUGE_VAL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a4cc020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a4cc020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...y_HUGE_VAL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_HUGE_VAL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_Py_HUGE_VAL'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_Py_HUGE_VAL'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_Py_HUGE_VAL at 0x00007fdd58ca4ea8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFloatObject.w_compile_module of <pypy.module.cpyext.test.test_floatobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_floatobject.AppTestFloatObject object at 0x00007fdd5903e170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5903e1e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> E test_Py_HUGE_VAL() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_Py_HUGE_VAL E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_Py_HUGE_VAL(): module = self.import_extension('foo', [ ("test", "METH_NOARGS", """ return PyFloat_FromDouble(Py_HUGE_VAL); """), ]) assert module.test() == float('inf') try: test_Py_HUGE_VAL() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> test_Py_HUGE_VAL() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_Py_HUGE_VAL module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestFloatObject.test_Py_NAN ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af2b448>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_NAN'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_NAN'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_NAN'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_NAN'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_NAN'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_NAN'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_NAN'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a6ba138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_Py_NAN'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5919b120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5919b120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_Py_NAN'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_NAN'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_Py_NAN'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_Py_NAN'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_Py_NAN at 0x00007fdd58ca4f20> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFloatObject.w_compile_module of <pypy.module.cpyext.test.test_floatobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_floatobject.AppTestFloatObject object at 0x00007fdd6a4a4170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a4a41e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> E test_Py_NAN() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_Py_NAN E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_Py_NAN(): import sys module = self.import_extension('foo', [ ("test", "METH_NOARGS", """ return PyFloat_FromDouble(Py_NAN); """), ]) if sys.platform == 'win32': # CPython does not enforce bit-compatibility between the NANs import math assert math.isnan(module.test()) else: import struct float_bits = struct.Struct('d').pack assert float_bits(module.test()) == float_bits(float('nan')) try: test_Py_NAN() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> test_Py_NAN() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_Py_NAN module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestFloatObject.test_roundtrip _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59189e20>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_roundtrip'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_roundtrip'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_roundtrip'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_roundtrip'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_roundtrip'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_roundtrip'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_roundtrip'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f942f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._roundtrip'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a12c060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a12c060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._roundtrip'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_roundtrip'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_roundtrip'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_roundtrip'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_roundtrip at 0x00007fdd58ca4f98> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFloatObject.w_compile_module of <pypy.module.cpyext.test.test_floatobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_floatobject.AppTestFloatObject object at 0x00007fdd58fd4410>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58fd4480> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 225, in <module> E test_roundtrip() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_roundtrip E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_roundtrip(): module = self.import_extension('foo', [ ("float_pack", "METH_VARARGS", """ int size; double d; int le; if (!PyArg_ParseTuple(args, "idi", &size, &d, &le)) { return NULL; } switch (size) { case 2: { char data[2]; if (PyFloat_Pack2(d, data, le) < 0) { return NULL; } return PyBytes_FromStringAndSize(data, Py_ARRAY_LENGTH(data)); } case 4: { char data[4]; if (PyFloat_Pack4(d, data, le) < 0) { return NULL; } return PyBytes_FromStringAndSize(data, Py_ARRAY_LENGTH(data)); } case 8: { char data[8]; if (PyFloat_Pack8(d, data, le) < 0) { return NULL; } return PyBytes_FromStringAndSize(data, Py_ARRAY_LENGTH(data)); } default: break; } PyErr_SetString(PyExc_ValueError, "size must 2, 4 or 8"); return NULL; """), ("float_unpack", "METH_VARARGS", """ assert(!PyErr_Occurred()); const char *data; Py_ssize_t size; int le; if (!PyArg_ParseTuple(args, "y#i", &data, &size, &le)) { return NULL; } double d; switch (size) { case 2: d = PyFloat_Unpack2(data, le); break; case 4: d = PyFloat_Unpack4(data, le); break; case 8: d = PyFloat_Unpack8(data, le); break; default: PyErr_SetString(PyExc_ValueError, "data length must 2, 4 or 8 bytes"); return NULL; } if (d == -1.0 && PyErr_Occurred()) { return NULL; } return PyFloat_FromDouble(d); """), ], PY_SSIZE_T_CLEAN=1) import math HAVE_IEEE_754 = float.__getformat__("double").startswith("IEEE") INF = float("inf") NAN = float("nan") BIG_ENDIAN = 0 LITTLE_ENDIAN = 1 EPSILON = { 2: 2.0 ** -11, # binary16 4: 2.0 ** -24, # binary32 8: 2.0 ** -53, # binary64 } large = 2.0 ** 100 values = [1.0, 1.5, large, 1.0/7, math.pi] if HAVE_IEEE_754: values.extend((INF, NAN)) for value in values: for size in (2, 4, 8,): if size == 2 and value == large: # too large for 16-bit float continue rel_tol = EPSILON[size] for endian in (BIG_ENDIAN, LITTLE_ENDIAN): data = module.float_pack(size, value, endian) value2 = module.float_unpack(data, endian) if math.isnan(value): assert math.isnan(value2), (value, value2) elif size < 8: assert math.isclose(value2, value, rel_tol=rel_tol), (value, value2) else: assert value2 == value try: test_roundtrip() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 225, in <module> test_roundtrip() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_roundtrip module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestFrameObject.test_forge_frame ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b1404d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forge_frame'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_forge_frame'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forge_frame'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_forge_frame'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forge_frame'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_forge_frame'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forge_frame'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5072e228> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...orge_frame'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5064cae0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5064cae0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...orge_frame'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forge_frame'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_forge_frame'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_forge_frame'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_forge_frame at 0x00007fdd58ca55b0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFrameObject.w_compile_module of <pypy.module.cpyext.test.test_frameobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_frameobject.AppTestFrameObject object at 0x00007fdd6a580640>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a581830> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 188, in <module> E test_forge_frame() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_forge_frame E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_forge_frame(): module = self.import_extension('foo', [ ("raise_exception", "METH_NOARGS", """ PyObject *py_srcfile = PyUnicode_FromString("filename"); PyObject *py_funcname = PyUnicode_FromString("funcname"); PyObject *py_globals = PyDict_New(); PyObject *py_locals = PyDict_New(); PyObject *empty_bytes = PyBytes_FromString(""); PyObject *empty_tuple = PyTuple_New(0); PyCodeObject *py_code; PyFrameObject *py_frame = NULL; py_code = (PyCodeObject *)PyCode_New( 0, /*int argcount,*/ 0, /*int kwonlyargcount,*/ 0, /*int nlocals,*/ 0, /*int stacksize,*/ 0, /*int flags,*/ empty_bytes, /*PyObject *code,*/ empty_tuple, /*PyObject *consts,*/ empty_tuple, /*PyObject *names,*/ empty_tuple, /*PyObject *varnames,*/ empty_tuple, /*PyObject *freevars,*/ empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *qualname,*/ py_funcname, /*PyObject *name,*/ 42, /*int firstlineno,*/ empty_bytes, /*PyObject *linetable,*/ empty_bytes /*PyObject *exceptiontable*/ ); if (!py_code) goto bad; py_frame = PyFrame_New( PyThreadState_Get(), /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ py_globals, /*PyObject *globals,*/ py_locals /*PyObject *locals*/ ); if (!py_frame) goto bad; py_frame->f_lineno = 48; /* Does not work with CPython */ PyErr_SetString(PyExc_ValueError, "error message"); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_srcfile); Py_XDECREF(py_funcname); Py_XDECREF(empty_bytes); Py_XDECREF(empty_tuple); Py_XDECREF(py_globals); Py_XDECREF(py_locals); Py_XDECREF(py_code); Py_XDECREF(py_frame); return NULL; """), ], prologue='#include "frameobject.h"') exc = raises(ValueError, module.raise_exception) exc.value.args[0] == 'error message' frame = exc.traceback.tb_frame if not self.runappdirect: frame = exc.traceback.tb_frame assert frame.f_code.co_filename == "filename" assert frame.f_code.co_name == "funcname" # Cython does not work on CPython as well... assert exc.traceback.tb_lineno in (-1, 42, 48) # should be 48 assert frame.f_lineno in (-1, 42, 48) try: test_forge_frame() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 188, in <module> test_forge_frame() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_forge_frame module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestFrameObject.test_forge_frame_newer ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forge_frame_newer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_forge_frame_newer'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forge_frame_newer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_forge_frame_newer'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forge_frame_newer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_forge_frame_newer'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forge_frame_newer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508d14e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...rame_newer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5013e7a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5013e7a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...rame_newer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forge_frame_newer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_forge_frame_newer'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_forge_frame_newer'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_forge_frame_newer at 0x00007fdd58ca5628> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFrameObject.w_compile_module of <pypy.module.cpyext.test.test_frameobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_frameobject.AppTestFrameObject object at 0x00007fdd79c98608>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79c8d9f0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 157, in <module> E test_forge_frame_newer() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_forge_frame_newer E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_forge_frame_newer(): module = self.import_extension('foo', [ ("raise_exception", "METH_NOARGS", """ PyCodeObject *py_code = NULL; PyFrameObject *py_frame = NULL; PyObject *py_globals = NULL; py_code = PyCode_NewEmpty( "filename", "funcname", 42); py_globals = PyDict_New(); py_frame = PyFrame_New( PyThreadState_Get(), /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ py_globals, /*PyObject *globals,*/ NULL /*PyObject *locals*/ ); PyErr_SetString(PyExc_ValueError, "error message"); PyTraceBack_Here(py_frame); Py_XDECREF(py_globals); Py_XDECREF(py_code); Py_XDECREF(py_frame); return NULL; """), ], prologue='#include "frameobject.h"') exc = raises(ValueError, module.raise_exception) exc.value.args[0] == 'error message' frame = exc.traceback.tb_frame if not self.runappdirect: assert frame.f_code.co_filename == "filename" assert frame.f_code.co_name == "funcname" assert exc.traceback.tb_lineno == 42 assert frame.f_lineno == 42 try: test_forge_frame_newer() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 157, in <module> test_forge_frame_newer() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_forge_frame_newer module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestFrameObject.test_traceback_check ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_traceback_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_traceback_check'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_traceback_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_traceback_check'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_traceback_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_traceback_check'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_traceback_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a66a160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...back_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a646060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a646060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...back_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_traceback_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_traceback_check'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_traceback_check'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_traceback_check at 0x00007fdd58ca56a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFrameObject.w_compile_module of <pypy.module.cpyext.test.test_frameobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_frameobject.AppTestFrameObject object at 0x00007fdd7ae42528>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ae42598> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 155, in <module> E test_traceback_check() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_traceback_check E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_traceback_check(): module = self.import_extension('foo', [ ("traceback_check", "METH_NOARGS", """ int check; PyObject *type, *value, *tb; PyObject *ret = PyRun_String("XXX", Py_eval_input, Py_None, Py_None); if (ret) { Py_DECREF(ret); PyErr_SetString(PyExc_AssertionError, "should raise"); return NULL; } PyErr_Fetch(&type, &value, &tb); if (tb == NULL) { Py_XDECREF(type); Py_XDECREF(value); PyErr_SetString(PyExc_AssertionError, "No traceback"); return NULL; } check = PyTraceBack_Check(tb); Py_XDECREF(type); Py_XDECREF(value); Py_XDECREF(tb); if (check) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE; } """), ]) # On CPython the traceback is NULL assert module.traceback_check() try: test_traceback_check() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 155, in <module> test_traceback_check() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_traceback_check module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestFrameObject.test_get_xxx ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b1404d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_xxx'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_xxx'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_xxx'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d68778> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a12c020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a12c020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_get_xxx'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_get_xxx'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_get_xxx at 0x00007fdd58ca5718> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFrameObject.w_compile_module of <pypy.module.cpyext.test.test_frameobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_frameobject.AppTestFrameObject object at 0x00007fdd7abd85d0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7abd8b10> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 197, in <module> E test_get_xxx() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_get_xxx E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_get_xxx(): module = self.import_extension('foo', [ ("frame_getlocals", "METH_O", """ if (!PyFrame_Check(args)) { PyErr_SetString(PyExc_TypeError, "argument must be a frame"); return NULL; } return PyFrame_GetLocals((PyFrameObject *)args); """), ("frame_getglobals", "METH_O", """ if (!PyFrame_Check(args)) { PyErr_SetString(PyExc_TypeError, "argument must be a frame"); return NULL; } return PyFrame_GetGlobals((PyFrameObject *)args); """), ("frame_getgenerator", "METH_O", """ if (!PyFrame_Check(args)) { PyErr_SetString(PyExc_TypeError, "argument must be a frame"); return NULL; } return PyFrame_GetGenerator((PyFrameObject *)args); """), ("frame_getbuiltins", "METH_O", """ if (!PyFrame_Check(args)) { PyErr_SetString(PyExc_TypeError, "argument must be a frame"); return NULL; } return PyFrame_GetBuiltins((PyFrameObject *)args); """), ("frame_getlasti", "METH_O", """ if (!PyFrame_Check(args)) { PyErr_SetString(PyExc_TypeError, "argument must be a frame"); return NULL; } int lasti = PyFrame_GetLasti((PyFrameObject *)args); if (lasti < 0) { assert(lasti == -1); Py_RETURN_NONE; } return PyLong_FromLong(lasti); """), ("frame_getlinenumber", "METH_O", """ if (!PyFrame_Check(args)) { PyErr_SetString(PyExc_TypeError, "argument must be a frame"); return NULL; } int num = PyFrame_GetLineNumber((PyFrameObject *)args); if (num < 0) { Py_RETURN_NONE; } return PyLong_FromLong(num); """), ]) import sys frame = sys._getframe() assert frame.f_locals == module.frame_getlocals(frame) assert frame.f_globals == module.frame_getglobals(frame) assert frame.f_builtins == module.frame_getbuiltins(frame) lasti = module.frame_getlasti(frame) assert abs(frame.f_lasti - lasti) < 40 assert frame.f_lineno == module.frame_getlinenumber(frame) def getgenframe(): yield sys._getframe() gen = getgenframe() frame = next(gen) assert gen == module.frame_getgenerator(frame) try: test_get_xxx() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 197, in <module> test_get_xxx() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_get_xxx module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestFrameObject.test_frame_getvar _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59189e20>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frame_getvar'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_frame_getvar'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frame_getvar'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_frame_getvar'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frame_getvar'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_frame_getvar'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frame_getvar'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a686160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ame_getvar'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a68c060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a68c060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ame_getvar'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frame_getvar'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_frame_getvar'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_frame_getvar'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_frame_getvar at 0x00007fdd58ca5790> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFrameObject.w_compile_module of <pypy.module.cpyext.test.test_frameobject.AppT...w_import_extension of <pypy.module.cpyext.test.test_frameobject.AppTestFrameObject object at 0x00007fdd58bf0138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58bf01a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 157, in <module> E test_frame_getvar() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_frame_getvar E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_frame_getvar(): module = self.import_extension('foo', [ ("frame_getvar", "METH_VARARGS", """ PyObject *frame, *name; if (!PyArg_ParseTuple(args, "OO", &frame, &name)) return NULL; if (!PyFrame_Check(frame)) { PyErr_SetString(PyExc_TypeError, "argument must be a frame"); return NULL; } return PyFrame_GetVar((PyFrameObject *)frame, name); """), ("frame_getvarstring", "METH_VARARGS", """ PyObject *frame; const char *name; if (!PyArg_ParseTuple(args, "Oy", &frame, &name)) return NULL; if (!PyFrame_Check(frame)) { PyErr_SetString(PyExc_TypeError, "argument must be a frame"); return NULL; } return PyFrame_GetVarString((PyFrameObject *)frame, name); """), ], prologue='#include "frameobject.h"') import sys frame = sys._getframe() x = 1 assert module.frame_getvar(frame, "x") == 1 assert module.frame_getvarstring(frame, b"x") == 1 raises(NameError, module.frame_getvar, frame, "y") raises(NameError, module.frame_getvarstring, frame, b"y") # name must be a str raises(TypeError, module.frame_getvar, frame, b"x") raises(TypeError, module.frame_getvar, frame, 123) try: test_frame_getvar() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 157, in <module> test_frame_getvar() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_frame_getvar module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______ AppTestPickleCpyextFunction.test_pickle_cpyext_function_directly _______ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_cpyext_function_directly...ll__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_cpyext_function_directly'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_cpyext_function_directly...ll__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_cpyext_function_directly'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_cpyext_function_directly...ll__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_cpyext_function_directly'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_cpyext_function_directly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d54d90> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...n_directly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79cb44a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79cb44a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...n_directly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_cpyext_function_directly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pickle_cpyext_function_directly'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pickle_cpyext_function_directly'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pickle_cpyext_function_directly at 0x00007fdd58ca5bc8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPickleCpyextFunction.w_compile_module of <pypy.module.cpy...test.test_funcobje...ort_extension of <pypy.module.c...test.test_funcobject.AppTestPickleCpyextFunction object at 0x00007fdd7978e288>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7978e528> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> E test_pickle_cpyext_function_directly() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 126, in test_pickle_cpyext_function_directly E module = self.import_extension('pickle_cpyext_test', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pickle_cpyext_function_directly(): # Regression for issue #5445. # pickle.py registered _Pickler.save_global (an unbound method needing # self and obj) in copyreg.dispatch_table for cpyext.FunctionType. # Pickling any cpyext function raised: # TypeError: _Pickler.save_global() missing 1 required positional argument: 'obj' module = self.import_extension('pickle_cpyext_test', [ ("identity", "METH_O", """ Py_INCREF(args); return args; """), ]) import _pickle for proto in range(6): data = _pickle.dumps(module.identity, proto) result = _pickle.loads(data) assert result is module.identity # Also test via the high-level pickle module, which imports pickle.py # and previously installed a broken copyreg.dispatch_table entry that # caused the same TypeError when _pickle then looked it up. import pickle for proto in range(6): data = pickle.dumps(module.identity, protocol=proto) result = pickle.loads(data) assert result is module.identity try: test_pickle_cpyext_function_directly() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> test_pickle_cpyext_function_directly() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 126, in test_pickle_cpyext_function_directly module = self.import_extension('pickle_cpyext_test', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___ AppTestPickleCpyextFunction.test_pickle_reduce_returning_cpyext_function ___ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_reduce_returning_cpyext_..._MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_reduce_returning_cpyext_function'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_reduce_returning_cpyext_..._MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_reduce_returning_cpyext_function'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_reduce_returning_cpyext_..._MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_reduce_returning_cpyext_function'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_reduce_returning_cpyext_function'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58cea138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_function'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a530020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a530020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_function'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_reduce_returning_cpyext_function'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pickle_reduce_returning_cpyext_function'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pickle_reduce_returning_cpyext_function'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pickle_reduce_returning_cpyext_function at 0x00007fdd58ca5c40> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPickleCpyextFunction.w_compile_module of <pypy.module.cpy...test.test_funcobje...ort_extension of <pypy.module.c...test.test_funcobject.AppTestPickleCpyextFunction object at 0x00007fdd6a884170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a8841e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_pickle_reduce_returning_cpyext_function() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_pickle_reduce_returning_cpyext_function E module = self.import_extension('pickle_cpyext_reduce_test', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pickle_reduce_returning_cpyext_function(): # Regression for issue #5445: object whose __reduce__ returns a cpyext # function as the callable also triggered the TypeError. module = self.import_extension('pickle_cpyext_reduce_test', [ ("add_one", "METH_O", """ long n = PyLong_AsLong(args); if (n == -1 && PyErr_Occurred()) return NULL; return PyLong_FromLong(n + 1); """), ]) import _pickle class Container: def __reduce__(self): return module.add_one, (41,) for proto in range(6): result = _pickle.loads(_pickle.dumps(Container(), proto)) assert result == 42 try: test_pickle_reduce_returning_cpyext_function() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_pickle_reduce_returning_cpyext_function() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_pickle_reduce_returning_cpyext_function module = self.import_extension('pickle_cpyext_reduce_test', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________ AppTestPickleCpyextFunction.test_pickle_method_descriptor ___________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59189e20>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_method_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_method_descriptor'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_method_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_method_descriptor'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_method_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_method_descriptor'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_method_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f94570> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58c20060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58c20060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_method_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pickle_method_descriptor'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pickle_method_descriptor'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pickle_method_descriptor at 0x00007fdd58ca5cb8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPickleCpyextFunction.w_compile_module of <pypy.module.cpy...test.test_funcobje...ort_extension of <pypy.module.c...test.test_funcobject.AppTestPickleCpyextFunction object at 0x00007fdd687accd0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd687844b8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 156, in <module> E test_pickle_method_descriptor() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_pickle_method_descriptor E module = self.import_extension('pickle_method_desc', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pickle_method_descriptor(): # method_descriptor (W_PyCMethodObject): unbound method on a C extension type, # e.g. MyType.my_method. Should pickle as (getattr, (MyType, 'my_method')). module = self.import_extension('pickle_method_desc', [ ("new_obj", "METH_NOARGS", """ PyObject *obj = PyObject_New(PyObject, &Foo_Type); return obj; """), ], prologue=""" static PyObject * foo_greet(PyObject *self, PyObject *args) { return PyLong_FromLong(42); } static PyMethodDef foo_methods[] = { {"greet", foo_greet, METH_NOARGS, NULL}, {NULL} }; static PyTypeObject Foo_Type = { PyVarObject_HEAD_INIT(NULL, 0) "pickle_method_desc.Foo", }; """, more_init=""" Foo_Type.tp_flags = Py_TPFLAGS_DEFAULT; Foo_Type.tp_methods = foo_methods; if (PyType_Ready(&Foo_Type) < 0) INITERROR; PyModule_AddObject(mod, "Foo", (PyObject *)&Foo_Type); """) import _pickle # module.Foo.greet is a method_descriptor (W_PyCMethodObject) for proto in range(6): data = _pickle.dumps(module.Foo.greet, proto) result = _pickle.loads(data) assert result is module.Foo.greet try: test_pickle_method_descriptor() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 156, in <module> test_pickle_method_descriptor() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_pickle_method_descriptor module = self.import_extension('pickle_method_desc', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________ AppTestPickleCpyextFunction.test_pickle_classmethod_descriptor ________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b1404d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_classmethod_descriptor'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_classmethod_descriptor'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_classmethod_descriptor'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_classmethod_descriptor'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_classmethod_descriptor'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_classmethod_descriptor'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_classmethod_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac3e5e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58f26520> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58f26520> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_classmethod_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pickle_classmethod_descriptor'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pickle_classmethod_descriptor'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pickle_classmethod_descriptor at 0x00007fdd58ca5d30> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPickleCpyextFunction.w_compile_module of <pypy.module.cpy...test.test_funcobje...ort_extension of <pypy.module.c...test.test_funcobject.AppTestPickleCpyextFunction object at 0x00007fdd58820138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd588201a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 156, in <module> E test_pickle_classmethod_descriptor() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_pickle_classmethod_descriptor E module = self.import_extension('pickle_classmethod_desc', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pickle_classmethod_descriptor(): # classmethod on a C extension type (W_PyCClassMethodObject). # Should pickle as (getattr, (MyType, 'from_int')). module = self.import_extension('pickle_classmethod_desc', [ ("new_obj", "METH_NOARGS", """ PyObject *obj = PyObject_New(PyObject, &Foo_Type); return obj; """), ], prologue=""" static PyObject * foo_from_int(PyObject *cls, PyObject *args) { return PyLong_FromLong(99); } static PyMethodDef foo_methods[] = { {"from_int", foo_from_int, METH_NOARGS | METH_CLASS, NULL}, {NULL} }; static PyTypeObject Foo_Type = { PyVarObject_HEAD_INIT(NULL, 0) "pickle_classmethod_desc.Foo", }; """, more_init=""" Foo_Type.tp_flags = Py_TPFLAGS_DEFAULT; Foo_Type.tp_methods = foo_methods; if (PyType_Ready(&Foo_Type) < 0) INITERROR; PyModule_AddObject(mod, "Foo", (PyObject *)&Foo_Type); """) import _pickle # module.Foo.from_int is a W_PyCClassMethodObject for proto in range(6): data = _pickle.dumps(module.Foo.from_int, proto) result = _pickle.loads(data) assert result.__qualname__ == "Foo.from_int" try: test_pickle_classmethod_descriptor() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 156, in <module> test_pickle_classmethod_descriptor() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_pickle_classmethod_descriptor module = self.import_extension('pickle_classmethod_desc', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________ AppTestPickleCpyextFunction.test_pickle_wrapper_descriptor __________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_wrapper_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_wrapper_descriptor'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_wrapper_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_wrapper_descriptor'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_wrapper_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pickle_wrapper_descriptor'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_wrapper_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d54fe8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b212060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b212060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pickle_wrapper_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pickle_wrapper_descriptor'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pickle_wrapper_descriptor'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pickle_wrapper_descriptor at 0x00007fdd58ca5da8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPickleCpyextFunction.w_compile_module of <pypy.module.cpy...test.test_funcobje...ort_extension of <pypy.module.c...test.test_funcobject.AppTestPickleCpyextFunction object at 0x00007fdd7addca30>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7addcb80> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> E test_pickle_wrapper_descriptor() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_pickle_wrapper_descriptor E module = self.import_extension('pickle_wrapper_desc', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pickle_wrapper_descriptor(): # wrapper_descriptor (W_PyCWrapperObject): slot wrapper on a C extension # type, e.g. MyType.__repr__. Should pickle as (getattr, (MyType, '__repr__')). module = self.import_extension('pickle_wrapper_desc', [ ("new_obj", "METH_NOARGS", """ PyObject *obj = PyObject_New(PyObject, &Foo_Type); return obj; """), ], prologue=""" static PyObject * foo_repr(PyObject *self) { return PyUnicode_FromString("<Foo>"); } static PyTypeObject Foo_Type = { PyVarObject_HEAD_INIT(NULL, 0) "pickle_wrapper_desc.Foo", }; """, more_init=""" Foo_Type.tp_flags = Py_TPFLAGS_DEFAULT; Foo_Type.tp_repr = foo_repr; if (PyType_Ready(&Foo_Type) < 0) INITERROR; PyModule_AddObject(mod, "Foo", (PyObject *)&Foo_Type); """) import _pickle # module.Foo.__repr__ is a wrapper_descriptor (W_PyCWrapperObject) for proto in range(6): data = _pickle.dumps(module.Foo.__repr__, proto) result = _pickle.loads(data) assert result is module.Foo.__repr__ try: test_pickle_wrapper_descriptor() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> test_pickle_wrapper_descriptor() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_pickle_wrapper_descriptor module = self.import_extension('pickle_wrapper_desc', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestCall.test_code_new_empty ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_code_new_empty'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_code_new_empty'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_code_new_empty'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_code_new_empty'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_code_new_empty'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_code_new_empty'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_code_new_empty'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58dc8340> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._new_empty'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a9f8020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a9f8020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._new_empty'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_code_new_empty'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_code_new_empty'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_code_new_empty'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_code_new_empty at 0x00007fdd58ca5ad8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCall.w_compile_module of <pypy.module.cpyext.test.test_funcobject.AppTestCall ...estCall.w_import_extension of <pypy.module.cpyext.test.test_funcobject.AppTestCall object at 0x00007fdd6a874170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a874368> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 150, in <module> E test_code_new_empty() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_code_new_empty E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_code_new_empty(): module = self.import_extension('foo', [ ("code_newempty", "METH_VARARGS", """ const char *filename; const char *funcname; int firstlineno; if (!PyArg_ParseTuple(args, "ssi:code_newempty", &filename, &funcname, &firstlineno)) return NULL; return (PyObject *)PyCode_NewEmpty(filename, funcname, firstlineno); """), ]) def f(): return args # check that calling a code object constructed by PyCode_NewEmpty # doesn't crash, and produce the right file, lineno, etc if not self.runappdirect: # The exception mocking for appdirect doesn't work well enough f.__code__ = module.code_newempty("abc", "def", 23) with raises(AssertionError) as info: f() lines = list(f.__code__.co_lines()) assert lines == [(0, 4, 23)] assert info.tb.tb_next.tb_lineno == 23 try: test_code_new_empty() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 150, in <module> test_code_new_empty() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_code_new_empty module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________________ AppTestCall.test_get_xxx ___________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b1404d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_xxx'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_xxx'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_xxx'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f9e638> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b21e060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b21e060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_xxx'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_get_xxx'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_get_xxx'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_get_xxx at 0x00007fdd58ca5b50> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCall.w_compile_module of <pypy.module.cpyext.test.test_funcobject.AppTestCall ...estCall.w_import_extension of <pypy.module.cpyext.test.test_funcobject.AppTestCall object at 0x00007fdd50c76170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd50c761e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 198, in <module> E test_get_xxx() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_get_xxx E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_get_xxx(): module = self.import_extension('foo', [ ("code_numfree", "METH_O", """ PyCodeObject *code = (PyCodeObject*)PyFunction_GetCode(args); if (code == NULL) { return NULL; } size_t n = PyCode_GetNumFree(code); return PyLong_FromSize_t(n); """), ("code_cellvars", "METH_O", """ PyCodeObject *code = (PyCodeObject*)PyFunction_GetCode(args); if (code == NULL) { return NULL; } return PyCode_GetCellvars(code); """), ("code_code", "METH_O", """ PyCodeObject *code = (PyCodeObject*)PyFunction_GetCode(args); if (code == NULL) { return NULL; } return PyCode_GetCode(code); """), ("code_freevars", "METH_O", """ PyCodeObject *code = (PyCodeObject*)PyFunction_GetCode(args); if (code == NULL) { return NULL; } return PyCode_GetFreevars(code); """), ("code_varnames", "METH_O", """ PyCodeObject *code = (PyCodeObject*)PyFunction_GetCode(args); if (code == NULL) { return NULL; } return PyCode_GetVarnames(code); """), ("func_globals", "METH_O", """ return PyFunction_GetGlobals(args); """), ("func_name", "METH_O", """ return PyUnicode_FromString(PyEval_GetFuncName(args)); """), ]) g = 42 def wrapper(x): a = 5 global g g = 12 def func(x): return a, x code = wrapper.__code__ class A: def method_example(self): pass assert module.code_cellvars(wrapper) == ('a', ) assert module.code_numfree(wrapper) == 0 assert module.code_code(wrapper) == code.co_code assert module.code_freevars(wrapper) == code.co_freevars assert module.code_varnames(wrapper) == code.co_varnames assert module.func_globals(wrapper) == wrapper.__globals__ assert module.func_name(sum) == "sum" assert module.func_name(wrapper) == "wrapper" assert module.func_name(A.method_example) == "method_example" assert module.func_name(A().method_example) == "method_example" assert module.func_name(A) == "type" # type objects: return metatype name try: test_get_xxx() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 198, in <module> test_get_xxx() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_get_xxx module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestCoroutine.test_generator_coroutine ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_generator_coroutine'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_generator_coroutine'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_generator_coroutine'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_generator_coroutine'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_generator_coroutine'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_generator_coroutine'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_generator_coroutine'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51350598> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._coroutine'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5915ede0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5915ede0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._coroutine'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_generator_coroutine'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_generator_coroutine'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_generator_coroutine'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_generator_coroutine at 0x00007fdd505a6cc8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCoroutine.w_compile_module of <pypy.module.cpyext.test.test_genobject.AppTestC...ine.w_import_extension of <pypy.module.cpyext.test.test_genobject.AppTestCoroutine object at 0x00007fdd588204b8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58820758> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_generator_coroutine() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_generator_coroutine E module = self.import_extension('test_gen', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_generator_coroutine(): module = self.import_extension('test_gen', [ ('is_coroutine', 'METH_O', ''' if (!PyGen_CheckExact(args)) Py_RETURN_NONE; PyObject* co = ((PyGenObject*)args)->gi_code; if (((PyCodeObject*)co)->co_flags & CO_ITERABLE_COROUTINE) Py_RETURN_TRUE; else Py_RETURN_FALSE; ''')]) def it(): yield 42 assert module.is_coroutine(it()) is False self.debug_collect() # don't crash while deallocating from types import coroutine assert module.is_coroutine(coroutine(it)()) is True try: test_generator_coroutine() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_generator_coroutine() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_generator_coroutine module = self.import_extension('test_gen', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestCoroutine.test_await __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_await'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_await'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_await'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_await'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_await'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_await'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_await'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58fb8430> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_await'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58576020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58576020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_await'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_await'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_await'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_await'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = "test_await(self): \n module = self.import_extension('test_coroutine', [\n ('await_', 'METH_O',\n ...NULL;\n '''),])\n async def f():\n pass\n raises(StopIteration, next, module.await_(f()))" usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCoroutine.w_compile_module of <pypy.module.cpyext.test.test_genobject.AppTestC...ine.w_import_extension of <pypy.module.cpyext.test.test_genobject.AppTestCoroutine object at 0x00007fdd69dcc1e0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69dcc250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> E test_await() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_await E module = self.import_extension('test_coroutine', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_await(): module = self.import_extension('test_coroutine', [ ('await_', 'METH_O', ''' PyAsyncMethods* am = args->ob_type->tp_as_async; if (am && am->am_await) { return am->am_await(args); } PyErr_SetString(PyExc_TypeError, "Not an awaitable"); return NULL; '''),]) async def f(): pass raises(StopIteration, next, module.await_(f())) try: test_await() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> test_await() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_await module = self.import_extension('test_coroutine', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestGetargs.test_pyarg_parse_int ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_int'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_int'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_int'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_int'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_int'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_int'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_int'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58cea2a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._parse_int'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd594e2d60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd594e2d60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._parse_int'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_int'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pyarg_parse_int'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pyarg_parse_int'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pyarg_parse_int at 0x00007fdd505a6458> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd5882a170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5882ab80> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> E test_pyarg_parse_int() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in test_pyarg_parse_int E oneargint = self.import_parser( E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser E mod = self.import_extension( E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pyarg_parse_int(): """ The `i` format specifier can be used to parse an integer. """ oneargint = self.import_parser( ''' int l; if (!PyArg_ParseTuple(args, "i", &l)) { return NULL; } return PyLong_FromLong(l); ''') assert oneargint(1) == 1 raises(TypeError, oneargint, None) raises(TypeError, oneargint) try: test_pyarg_parse_int() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> test_pyarg_parse_int() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in test_pyarg_parse_int oneargint = self.import_parser( ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser mod = self.import_extension( ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestGetargs.test_pyarg_parse_fromname ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_fromname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_fromname'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_fromname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_fromname'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_fromname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_fromname'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_fromname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d54fe8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...e_fromname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd586ac160> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd586ac160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...e_fromname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_fromname'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pyarg_parse_fromname'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pyarg_parse_fromname'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pyarg_parse_fromname at 0x00007fdd505a64d0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd69d804f0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69d80528> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_pyarg_parse_fromname() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in test_pyarg_parse_fromname E oneargandform = self.import_parser( E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser E mod = self.import_extension( E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pyarg_parse_fromname(): """ The name of the function parsing the arguments can be given after a `:` in the argument format string. """ oneargandform = self.import_parser( ''' int l; if (!PyArg_ParseTuple(args, "i:oneargandstuff", &l)) { return NULL; } return PyLong_FromLong(l); ''') assert oneargandform(1) == 1 try: test_pyarg_parse_fromname() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_pyarg_parse_fromname() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in test_pyarg_parse_fromname oneargandform = self.import_parser( ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser mod = self.import_extension( ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestGetargs.test_pyarg_parse_object ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd502d2278>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_object'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_object'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_object'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a66a160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...rse_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a7b0020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a7b0020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...rse_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pyarg_parse_object'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pyarg_parse_object'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pyarg_parse_object at 0x00007fdd505a6548> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd58820950>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58820988> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> E test_pyarg_parse_object() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in test_pyarg_parse_object E oneargobject = self.import_parser( E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser E mod = self.import_extension( E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pyarg_parse_object(): """ The `O` format specifier can be used to parse an arbitrary object. """ oneargobject = self.import_parser( ''' PyObject *obj; if (!PyArg_ParseTuple(args, "O", &obj)) { return NULL; } Py_INCREF(obj); return obj; ''') sentinel = object() res = oneargobject(sentinel) assert res is sentinel try: test_pyarg_parse_object() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> test_pyarg_parse_object() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in test_pyarg_parse_object oneargobject = self.import_parser( ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser mod = self.import_extension( ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________ AppTestGetargs.test_pyarg_parse_restricted_object_type ____________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_restricted_object_t..._': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_restricted_object_type'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_restricted_object_t..._': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_restricted_object_type'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_restricted_object_t..._': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_restricted_object_type'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_restricted_object_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50cba138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...bject_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505201e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505201e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...bject_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_restricted_object_type'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pyarg_parse_restricted_object_type'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pyarg_parse_restricted_object_type'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pyarg_parse_restricted_object_type at 0x00007fdd505a65c0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd7abeea68>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7abeeaa0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> E test_pyarg_parse_restricted_object_type() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in test_pyarg_parse_restricted_object_type E oneargobjectandlisttype = self.import_parser( E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser E mod = self.import_extension( E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pyarg_parse_restricted_object_type(): """ The `O!` format specifier can be used to parse an object of a particular type. """ oneargobjectandlisttype = self.import_parser( ''' PyObject *obj; if (!PyArg_ParseTuple(args, "O!", &PyList_Type, &obj)) { return NULL; } Py_INCREF(obj); return obj; ''') sentinel = object() raises(TypeError, "oneargobjectandlisttype(sentinel)") sentinel = [] res = oneargobjectandlisttype(sentinel) assert res is sentinel try: test_pyarg_parse_restricted_object_type() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> test_pyarg_parse_restricted_object_type() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in test_pyarg_parse_restricted_object_type oneargobjectandlisttype = self.import_parser( ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser mod = self.import_extension( ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________ AppTestGetargs.test_pyarg_parse_one_optional _________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aada7a0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_one_optional'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_one_optional'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_one_optional'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_one_optional'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_one_optional'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_one_optional'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_one_optional'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a6ba2c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...e_optional'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a78e020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a78e020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...e_optional'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_one_optional'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pyarg_parse_one_optional'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pyarg_parse_one_optional'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pyarg_parse_one_optional at 0x00007fdd505a6638> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd6a884368>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a8843a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> E test_pyarg_parse_one_optional() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in test_pyarg_parse_one_optional E twoopt = self.import_parser( E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser E mod = self.import_extension( E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pyarg_parse_one_optional(): """ An object corresponding to a format specifier after a `|` in the argument format string is optional and may be passed or not. """ twoopt = self.import_parser( ''' PyObject *a; PyObject *b = NULL; if (!PyArg_ParseTuple(args, "O|O", &a, &b)) { return NULL; } if (b) Py_INCREF(b); else b = PyLong_FromLong(42); /* return an owned reference */ return b; ''') assert twoopt(1) == 42 assert twoopt(1, 2) == 2 raises(TypeError, twoopt, 1, 2, 3) try: test_pyarg_parse_one_optional() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> test_pyarg_parse_one_optional() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in test_pyarg_parse_one_optional twoopt = self.import_parser( ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser mod = self.import_extension( ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________ AppTestGetargs.test_pyarg_parse_string_py_buffer _______________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_string_py_buffer'>,...icall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_string_py_buffer'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_string_py_buffer'>,...icall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_string_py_buffer'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_string_py_buffer'>,...icall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_string_py_buffer'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_string_py_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f94570> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._py_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b26a020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b26a020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._py_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_string_py_buffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pyarg_parse_string_py_buffer'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pyarg_parse_string_py_buffer'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pyarg_parse_string_py_buffer at 0x00007fdd505a66b0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd687dffa0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd687d0170> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 149, in <module> E test_pyarg_parse_string_py_buffer() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in test_pyarg_parse_string_py_buffer E pybuffer = self.import_parser( E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser E mod = self.import_extension( E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pyarg_parse_string_py_buffer(): """ The `s*` format specifier can be used to parse a str into a Py_buffer structure containing a pointer to the string data and the length of the string data. """ pybuffer = self.import_parser( ''' Py_buffer buf; PyObject *result; if (!PyArg_ParseTuple(args, "s*", &buf)) { return NULL; } result = PyBytes_FromStringAndSize(buf.buf, buf.len); PyBuffer_Release(&buf); return result; ''') assert b'foo\0bar\0baz' == pybuffer(b'foo\0bar\0baz') #return # XXX? assert b'foo\0bar\0baz' == pybuffer(bytearray(b'foo\0bar\0baz')) try: test_pyarg_parse_string_py_buffer() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 149, in <module> test_pyarg_parse_string_py_buffer() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in test_pyarg_parse_string_py_buffer pybuffer = self.import_parser( ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser mod = self.import_extension( ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________ AppTestGetargs.test_pyarg_parse_string_fails _________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_string_fails'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_string_fails'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_string_fails'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_string_fails'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_string_fails'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_string_fails'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_string_fails'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a65a138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ring_fails'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e0ac20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e0ac20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ring_fails'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_string_fails'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pyarg_parse_string_fails'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pyarg_parse_string_fails'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pyarg_parse_string_fails at 0x00007fdd505a6728> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd7b1cb520>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b1cb558> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 153, in <module> E test_pyarg_parse_string_fails() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in test_pyarg_parse_string_fails E pybuffer = self.import_parser( E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser E mod = self.import_extension( E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pyarg_parse_string_fails(): """ Test the failing case of PyArg_ParseTuple(): it must not keep a reference on the PyObject passed in. """ pybuffer = self.import_parser( ''' Py_buffer buf1, buf2, buf3; if (!PyArg_ParseTuple(args, "s*s*s*", &buf1, &buf2, &buf3)) { return NULL; } Py_FatalError("should not get there"); return NULL; ''') freed = [] class freestring(bytes): def __del__(self): freed.append('x') raises(TypeError, pybuffer, freestring(b"string"), freestring(b"other string"), 42) self.debug_collect() # gc.collect() is not enough in this test: # we need to check and free the PyObject # linked to the freestring object as well assert freed == ['x', 'x'] try: test_pyarg_parse_string_fails() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 153, in <module> test_pyarg_parse_string_fails() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in test_pyarg_parse_string_fails pybuffer = self.import_parser( ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser mod = self.import_extension( ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________ AppTestGetargs.test_pyarg_parse_charbuf_and_length ______________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_charbuf_and_length'...all__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_charbuf_and_length'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_charbuf_and_length'...all__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_charbuf_and_length'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_charbuf_and_length'...all__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_charbuf_and_length'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_charbuf_and_length'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50cba2a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...and_length'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a4e8020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a4e8020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...and_length'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_charbuf_and_length'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pyarg_parse_charbuf_and_length'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pyarg_parse_charbuf_and_length'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pyarg_parse_charbuf_and_length at 0x00007fdd505a67a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd794bf408>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd794bf440> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> E test_pyarg_parse_charbuf_and_length() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in test_pyarg_parse_charbuf_and_length E charbuf = self.import_parser( E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser E mod = self.import_extension( E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pyarg_parse_charbuf_and_length(): """ The `s#` format specifier can be used to parse a read-only 8-bit character buffer into a char* and int giving its length in bytes. """ charbuf = self.import_parser( ''' char *buf; int len; if (!PyArg_ParseTuple(args, "s#", &buf, &len)) { return NULL; } return PyBytes_FromStringAndSize(buf, len); ''', PY_SSIZE_T_CLEAN=True) raises(TypeError, "charbuf(10)") try: test_pyarg_parse_charbuf_and_length() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> test_pyarg_parse_charbuf_and_length() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in test_pyarg_parse_charbuf_and_length charbuf = self.import_parser( ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser mod = self.import_extension( ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________ AppTestGetargs.test_pyarg_parse_with_py_ssize_t ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t'>, ...ticall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t'>, ...ticall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t'>, ...ticall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a6ba480> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...py_ssize_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a510020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a510020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...py_ssize_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pyarg_parse_with_py_ssize_t'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pyarg_parse_with_py_ssize_t'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pyarg_parse_with_py_ssize_t at 0x00007fdd505a6818> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd5882ac28>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5882adb0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> E test_pyarg_parse_with_py_ssize_t() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in test_pyarg_parse_with_py_ssize_t E charbuf = self.import_parser( E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser E mod = self.import_extension( E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pyarg_parse_with_py_ssize_t(): charbuf = self.import_parser( ''' char *buf; Py_ssize_t y = -1; if (!PyArg_ParseTuple(args, "s#", &buf, &y)) { return NULL; } return PyLong_FromSsize_t(y); ''', PY_SSIZE_T_CLEAN=True) assert charbuf(b'12345') == 5 try: test_pyarg_parse_with_py_ssize_t() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> test_pyarg_parse_with_py_ssize_t() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in test_pyarg_parse_with_py_ssize_t charbuf = self.import_parser( ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser mod = self.import_extension( ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________ AppTestGetargs.test_pyarg_parse_with_py_ssize_t_bytes _____________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t_byt...__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t_bytes'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t_byt...__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t_bytes'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t_byt...__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t_bytes'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t_bytes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508dc1d8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ze_t_bytes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd591147a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd591147a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ze_t_bytes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyarg_parse_with_py_ssize_t_bytes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pyarg_parse_with_py_ssize_t_bytes'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pyarg_parse_with_py_ssize_t_bytes'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pyarg_parse_with_py_ssize_t_bytes at 0x00007fdd505a6890> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd7adfa330>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7adfa368> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_pyarg_parse_with_py_ssize_t_bytes() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in test_pyarg_parse_with_py_ssize_t_bytes E charbuf = self.import_parser( E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser E mod = self.import_extension( E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pyarg_parse_with_py_ssize_t_bytes(): charbuf = self.import_parser( ''' char *buf; Py_ssize_t len = -1; if (!PyArg_ParseTuple(args, "y#", &buf, &len)) { return NULL; } return PyBytes_FromStringAndSize(buf, len); ''', PY_SSIZE_T_CLEAN=True) assert type(charbuf(b'12345')) is bytes assert charbuf(b'12345') == b'12345' try: test_pyarg_parse_with_py_ssize_t_bytes() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_pyarg_parse_with_py_ssize_t_bytes() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in test_pyarg_parse_with_py_ssize_t_bytes charbuf = self.import_parser( ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 113, in w_import_parser mod = self.import_extension( ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestGetargs.test_getargs_keywords _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58790818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getargs_keywords'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getargs_keywords'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getargs_keywords'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getargs_keywords'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getargs_keywords'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getargs_keywords'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getargs_keywords'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51350818> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...s_keywords'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5063b320> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5063b320> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...s_keywords'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getargs_keywords'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_getargs_keywords'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_getargs_keywords'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_getargs_keywords at 0x00007fdd505a6908> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd505da330>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd505da368> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 149, in <module> E test_getargs_keywords() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in test_getargs_keywords E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_getargs_keywords(): # taken from lib-python/3/test_getargs2.py module = self.import_extension('foo', [ ("getargs_keywords", "METH_KEYWORDS | METH_VARARGS", ''' static char *keywords[] = {"arg1","arg2","arg3","arg4","arg5", NULL}; static char *fmt="(ii)i|(i(ii))(iii)i"; int int_args[10]={-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; if (!PyArg_ParseTupleAndKeywords(args, kwargs, fmt, keywords, &int_args[0], &int_args[1], &int_args[2], &int_args[3], &int_args[4], &int_args[5], &int_args[6], &int_args[7], &int_args[8], &int_args[9])) return NULL; return Py_BuildValue("iiiiiiiiii", int_args[0], int_args[1], int_args[2], int_args[3], int_args[4], int_args[5], int_args[6], int_args[7], int_args[8], int_args[9] ); ''')]) raises(TypeError, module.getargs_keywords, (1,2), 3, (4,(5,6)), (7,8,9), **{'\uDC80': 10}) try: test_getargs_keywords() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 149, in <module> test_getargs_keywords() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in test_getargs_keywords module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________________ AppTestGetargs.test_y _____________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b18d2e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_y'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_y'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_y'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_y'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_y'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_y'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_y'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50cba4a8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...od 'test_y'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abb90e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abb90e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...od 'test_y'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_y'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_y'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_y'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_y at 0x00007fdd505a6980> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd7ade2170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ade21a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 160, in <module> E test_y() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in test_y E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_y(): module = self.import_extension('foo', [ ("getargs_y_star", "METH_VARARGS", """ Py_buffer buffer; PyObject *bytes; if (!PyArg_ParseTuple(args, "y*", &buffer)) return NULL; bytes = PyBytes_FromStringAndSize(buffer.buf, buffer.len); PyBuffer_Release(&buffer); return bytes; """), ("getargs_y", "METH_VARARGS", """ char *str; if (!PyArg_ParseTuple(args, "y", &str)) return NULL; return PyBytes_FromString(str); """), ]) NONCONTIG_WRITABLE = memoryview(bytearray(b'noncontig'))[::-2] NONCONTIG_READONLY = memoryview(b'noncontig')[::-2] with raises(BufferError): module.getargs_y_star(NONCONTIG_WRITABLE) with raises(BufferError): module.getargs_y_star(NONCONTIG_READONLY) assert module.getargs_y(b'bytes') == b'bytes' with raises(TypeError): module.getargs_y(memoryview(b'memoryview')) with raises(TypeError): module.getargs_y(bytearray(b'memoryview')) try: test_y() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 160, in <module> test_y() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in test_y module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________________ AppTestGetargs.test_d _____________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aada9f8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_d'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_d'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_d'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_d'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_d'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_d'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_d'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58cde408> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...od 'test_d'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b212060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b212060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...od 'test_d'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_d'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_d'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_d'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_d at 0x00007fdd505a69f8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd7b1cb670>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b1cbb78> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> E test_d() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in test_d E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_d(): module = self.import_extension('foo', [ ("getargs_d", "METH_VARARGS", """ double d; if (!PyArg_ParseTuple(args, "d", &d)) return NULL; return PyFloat_FromDouble(d); """), ]) class FloatSubclass2(float): def __float__(self): return 4.25 # float subclass value overrides __float__ in PyFloat_AsDouble assert module.getargs_d(FloatSubclass2(7.5)) == 7.5 try: test_d() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> test_d() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in test_d module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestGetargs.test_d_index __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58790818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_d_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_d_index'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_d_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_d_index'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_d_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_d_index'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_d_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50c963e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_d_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5143c4a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5143c4a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_d_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_d_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_d_index'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_d_index'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_d_index at 0x00007fdd505a6a70> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd69770218>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69770250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> E test_d_index() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in test_d_index E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_d_index(): # Objects implementing __index__ should be accepted by the 'd' format # via the __float__ -> __index__ coercion chain. module = self.import_extension('foo', [ ("getargs_d", "METH_VARARGS", """ double d; if (!PyArg_ParseTuple(args, "d", &d)) return NULL; return PyFloat_FromDouble(d); """), ]) class Index: def __index__(self): return 99 assert module.getargs_d(Index()) == 99.0 try: test_d_index() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> test_d_index() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in test_d_index module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestGetargs.test_f_index __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b1404d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_f_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_f_index'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_f_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_f_index'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_f_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_f_index'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_f_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51350ac0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_f_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5874cd20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5874cd20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_f_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_f_index'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_f_index'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_f_index'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_f_index at 0x00007fdd505a6ae8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd5141e1e0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5141e218> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> E test_f_index() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in test_f_index E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_f_index(): # Objects implementing __index__ should be accepted by the 'f' format. module = self.import_extension('foo', [ ("getargs_f", "METH_VARARGS", """ float f; if (!PyArg_ParseTuple(args, "f", &f)) return NULL; return PyFloat_FromDouble((double)f); """), ]) class Index: def __index__(self): return 99 assert module.getargs_f(Index()) == 99.0 try: test_f_index() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> test_f_index() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in test_f_index module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestGetargs.test_nested_tuple_es ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c278>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nested_tuple_es'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_nested_tuple_es'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nested_tuple_es'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_nested_tuple_es'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nested_tuple_es'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_nested_tuple_es'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nested_tuple_es'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50922188> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...d_tuple_es'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58d86020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58d86020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...d_tuple_es'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nested_tuple_es'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_nested_tuple_es'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_nested_tuple_es'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_nested_tuple_es at 0x00007fdd505a6b60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestGetargs.w_compile_module of <pypy.module.cpyext.test.test_getargs.AppTestGetar...Getargs.w_import_extension of <pypy.module.cpyext.test.test_getargs.AppTestGetargs object at 0x00007fdd7a9f8250>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7a9f8288> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> E test_nested_tuple_es() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in test_nested_tuple_es E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_import_parser(self, implementation, argstyle='METH_VARARGS', PY_SSIZE_T_CLEAN=False): mod = self.import_extension( 'modname', [('funcname', argstyle, implementation)], PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) return mod.funcname type(self).import_parser = w_import_parser def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_nested_tuple_es(): # 'es' and 'et' are two-character format codes; inside a nested tuple # '(es)' the 'e' prefix must not be counted as a separate slot. module = self.import_extension('foo', [ ("getargs_nested_es", "METH_VARARGS", """ const char *encoding = ""; char *buf = NULL; if (!PyArg_ParseTuple(args, "(es)", encoding, &buf)) return NULL; PyObject *result = PyUnicode_FromString(buf); PyMem_Free(buf); return result; """), ]) # '(es)' expects a 1-element tuple; passing a 1-element tuple with # empty encoding should raise LookupError, not TypeError about length. raises(LookupError, module.getargs_nested_es, ('a',)) # passing a 0-element tuple should raise TypeError about length 1 vs 0 exc = raises(TypeError, module.getargs_nested_es, ()) assert "length 1" in str(exc.value) assert "not 0" in str(exc.value) try: test_nested_tuple_es() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> test_nested_tuple_es() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in test_nested_tuple_es module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestImportLogic.test_import_logic _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_import_logic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_import_logic'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_import_logic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_import_logic'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_import_logic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_import_logic'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_import_logic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58cea520> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...port_logic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5af2e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5af2e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...port_logic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_import_logic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_import_logic'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_import_logic'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_import_logic at 0x00007fdd505a6f98> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestImportLogic.w_compile_module of <pypy.module.cpyext.test.test_import.AppTestIm...ogic.w_import_extension of <pypy.module.cpyext.test.test_import.AppTestImportLogic object at 0x00007fdd59072288>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd59072480> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in <module> E test_import_logic() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_import_logic E path = self.compile_module('test_import_module', E ^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 77, in w_compile_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_import_logic(): import sys, os path = self.compile_module('test_import_module', source_files=[os.path.join(self.here, 'test_import_module.c')]) sys.path.append(os.path.dirname(path)) import test_import_module assert test_import_module.TEST is None try: test_import_logic() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in <module> test_import_logic() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_import_logic path = self.compile_module('test_import_module', ^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 77, in w_compile_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestImportLogic.test_getmodule _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b1404d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getmodule'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getmodule'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getmodule'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50c96638> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._getmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aa36b60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aa36b60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._getmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_getmodule'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_getmodule'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_getmodule at 0x00007fdd505a7010> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestImportLogic.w_compile_module of <pypy.module.cpyext.test.test_import.AppTestIm...ogic.w_import_extension of <pypy.module.cpyext.test.test_import.AppTestImportLogic object at 0x00007fdd7abd03a0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7abd0410> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> E test_getmodule() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_getmodule E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_getmodule(): import sys module = self.import_extension('foo', [ ("getmodule", "METH_O", ''' PyObject *mod = PyImport_GetModule(args); if (mod == NULL) { Py_RETURN_NONE; } return mod; ''')]) _sys = module.getmodule('sys') assert sys is _sys assert module.getmodule('not_in_sys_modules') is None try: test_getmodule() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> test_getmodule() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_getmodule module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________ AppTestIterator.test_noniterable_object_with_mapping_interface ________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_noniterable_object_with_mapping...ultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_noniterable_object_with_mapping_interface'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_noniterable_object_with_mapping...ultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_noniterable_object_with_mapping_interface'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_noniterable_object_with_mapping...ultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_noniterable_object_with_mapping_interface'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_noniterable_object_with_mapping_interface'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a6ba5e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._interface'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58d0b120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58d0b120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._interface'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_noniterable_object_with_mapping_interface'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_noniterable_object_with_mapping_interface'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_noniterable_object_with_mapping_interface'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_noniterable_object_with_mapping_interface at 0x00007fdd505a7880> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestIterator.w_compile_module of <pypy.module.cpyext.test.test_iterator.AppTestIte...rator.w_import_extension of <pypy.module.cpyext.test.test_iterator.AppTestIterator object at 0x00007fdd7b206330>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b206528> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 176, in <module> E test_noniterable_object_with_mapping_interface() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_noniterable_object_with_mapping_interface E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_noniterable_object_with_mapping_interface(): module = self.import_extension('foo', [ ("test", "METH_NOARGS", ''' PyObject *obj; obj = PyObject_New(PyObject, &Foo_Type); return obj; ''' ), ("get_dictproxy", "METH_O", ''' return PyDictProxy_New(args); ''' ), ("check", "METH_O", ''' return PyLong_FromLong( PySequence_Check(args) + PyMapping_Check(args) * 2); ''') ], prologue = ''' static PyObject * mp_subscript(PyObject *self, PyObject *key) { return PyLong_FromLong(42); } static Py_ssize_t mp_length(PyObject *self) { return 2; } PyMappingMethods tp_as_mapping; static PyTypeObject Foo_Type = { PyVarObject_HEAD_INIT(NULL, 0) "foo.foo", }; ''', more_init = ''' Foo_Type.tp_flags = Py_TPFLAGS_DEFAULT; Foo_Type.tp_as_mapping = &tp_as_mapping; tp_as_mapping.mp_length = mp_length; tp_as_mapping.mp_subscript = mp_subscript; if (PyType_Ready(&Foo_Type) < 0) INITERROR; ''') obj = module.test() assert obj["hi there"] == 42 assert len(obj) == 2 assert not hasattr(obj, "__iter__") e = raises(TypeError, iter, obj) assert str(e.value).endswith("object is not iterable") # assert module.check(obj) == 2 # make sure dictionaries return false for PySequence_Check assert module.check({'a': 1}) == 2 obj = module.get_dictproxy({'a': 10}) assert module.check(obj) == 2 try: test_noniterable_object_with_mapping_interface() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 176, in <module> test_noniterable_object_with_mapping_interface() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_noniterable_object_with_mapping_interface module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________ AppTestIterator.test_iterable_nonmapping_object ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iterable_nonmapping_object'>, '...lticall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iterable_nonmapping_object'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iterable_nonmapping_object'>, '...lticall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iterable_nonmapping_object'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iterable_nonmapping_object'>, '...lticall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_iterable_nonmapping_object'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iterable_nonmapping_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508dc548> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ing_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b1f6aa0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b1f6aa0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ing_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_iterable_nonmapping_object'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_iterable_nonmapping_object'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_iterable_nonmapping_object'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_iterable_nonmapping_object at 0x00007fdd505a7628> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestIterator.w_compile_module of <pypy.module.cpyext.test.test_iterator.AppTestIte...rator.w_import_extension of <pypy.module.cpyext.test.test_iterator.AppTestIterator object at 0x00007fdd58fd4640>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58fd46b0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 182, in <module> E test_iterable_nonmapping_object() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_iterable_nonmapping_object E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_iterable_nonmapping_object(): module = self.import_extension('foo', [ ("test", "METH_NOARGS", ''' PyObject *obj; obj = PyObject_New(PyObject, &Foo_Type); return obj; '''), ("check", "METH_O", ''' return PyLong_FromLong( PySequence_Check(args) + PyMapping_Check(args) * 2); ''') ], prologue=''' static PyObject * sq_item(PyObject *self, Py_ssize_t size) { return PyLong_FromLong(42); } static Py_ssize_t sq_length(PyObject *self) { return 2; } static PyObject * sq_repeat(PyObject *self, Py_ssize_t n) { return PyLong_FromLong(144); } static PyObject * sq_inplace_repeat(PyObject *self, Py_ssize_t n) { //fprintf(stdout, "in sq_inplace_repeat, n=%ld\\n", n); Py_INCREF(self); return self; } PySequenceMethods tp_as_sequence; static PyTypeObject Foo_Type = { PyVarObject_HEAD_INIT(NULL, 0) "foo.foo", }; ''', more_init=''' Foo_Type.tp_flags = Py_TPFLAGS_DEFAULT; Foo_Type.tp_as_sequence = &tp_as_sequence; tp_as_sequence.sq_length = sq_length; tp_as_sequence.sq_item = sq_item; tp_as_sequence.sq_repeat = sq_repeat; tp_as_sequence.sq_inplace_repeat = sq_inplace_repeat; if (PyType_Ready(&Foo_Type) < 0) INITERROR; ''') obj = module.test() assert obj[1] == 42 assert len(obj) == 2 assert not hasattr(obj, "__iter__") it = iter(obj) assert next(it) == 42 assert next(it) == 42 # assert module.check(obj) == 1 assert obj * 3 == 144 obj *= 3 assert obj[1] == 42 try: test_iterable_nonmapping_object() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 182, in <module> test_iterable_nonmapping_object() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_iterable_nonmapping_object module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestListObject.test_basic_listobject ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aadb268>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic_listobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_basic_listobject'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic_listobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_basic_listobject'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic_listobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_basic_listobject'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic_listobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58dc8700> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...listobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68ac7620> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68ac7620> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...listobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic_listobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_basic_listobject'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_basic_listobject'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_basic_listobject at 0x00007fdd505a7b50> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestListObject.w_compile_module of <pypy.module.cpyext.test.test_listobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_listobject.AppTestListObject object at 0x00007fdd6ace2170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ace2560> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 212, in <module> E test_basic_listobject() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_basic_listobject E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_basic_listobject(): import sys module = self.import_extension('foo', [ ("newlist", "METH_NOARGS", """ PyObject *lst = PyList_New(3); PyList_SetItem(lst, 0, PyLong_FromLong(3)); PyList_SetItem(lst, 2, PyLong_FromLong(1000)); PyList_SetItem(lst, 1, PyLong_FromLong(-5)); return lst; """ ), ("setlistitem", "METH_VARARGS", """ PyObject *l = PyTuple_GetItem(args, 0); int index = PyLong_AsLong(PyTuple_GetItem(args, 1)); Py_INCREF(Py_None); if (PyList_SetItem(l, index, Py_None) < 0) return NULL; Py_INCREF(Py_None); return Py_None; """ ), ("appendlist", "METH_VARARGS", """ PyObject *l = PyTuple_GetItem(args, 0); PyList_Append(l, PyTuple_GetItem(args, 1)); Py_RETURN_NONE; """ ), ("setslice", "METH_VARARGS", """ PyObject *l = PyTuple_GetItem(args, 0); PyObject *seq = PyTuple_GetItem(args, 1); if (seq == Py_None) seq = NULL; if (PyList_SetSlice(l, 1, 4, seq) < 0) return NULL; Py_RETURN_NONE; """ ), ('test_tp_as_', "METH_NOARGS", ''' PyObject *l = PyList_New(3); int ok = l->ob_type->tp_as_sequence != NULL; /* 1 */ ok += 2 * (l->ob_type->tp_as_number == NULL); /* 2 */ Py_DECREF(l); return PyLong_FromLong(ok); /* should be 3 */ ''' ), ]) l = module.newlist() assert l == [3, -5, 1000] module.setlistitem(l, 0) assert l[0] is None class L(list): def __setitem__(self): self.append("XYZ") l = L([1]) module.setlistitem(l, 0) assert len(l) == 1 raises(SystemError, module.setlistitem, (1, 2, 3), 0) l = [] module.appendlist(l, 14) assert len(l) == 1 assert l[0] == 14 l = list(range(6)) module.setslice(l, ['a']) assert l == [0, 'a', 4, 5] l = list(range(6)) module.setslice(l, None) assert l == [0, 4, 5] l = [1, 2, 3] module.setlistitem(l,0) assert l == [None, 2, 3] # tp_as_sequence should be filled, but tp_as_number should be NULL assert module.test_tp_as_() == 3 l = module.newlist() p = l.pop() assert p == 1000 p = l.pop(0) assert p == 3 assert l == [-5] try: test_basic_listobject() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 212, in <module> test_basic_listobject() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_basic_listobject module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestListObject.test_list_spec _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_list_spec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_list_spec'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_list_spec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_list_spec'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_list_spec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_list_spec'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_list_spec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508b81b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._list_spec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abe80e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abe80e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._list_spec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_list_spec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_list_spec'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_list_spec'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_list_spec at 0x00007fdd505a7bc8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestListObject.w_compile_module of <pypy.module.cpyext.test.test_listobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_listobject.AppTestListObject object at 0x00007fdd509121a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd50912218> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 170, in <module> E test_list_spec() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_list_spec E module = self.import_extension("foo", [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_list_spec(): module = self.import_extension("foo", [ ("setslice_slot", "METH_VARARGS", """ PyObject *l = PyTuple_GetItem(args, 0); PyObject *seq = PyTuple_GetItem(args, 1); PyMappingMethods* mp = Py_TYPE(l)->tp_as_mapping; if (mp && mp->mp_ass_subscript) { if (seq == Py_None) seq = NULL; PyObject *py_slice, *py_start, *py_stop; py_start = PyLong_FromSsize_t(1); py_stop = PyLong_FromSsize_t(4); py_slice = PySlice_New(py_start, py_stop, Py_None); int result = mp->mp_ass_subscript(l, py_slice, seq); Py_DECREF(py_start); Py_DECREF(py_stop); Py_DECREF(py_slice); if (result < 0) return NULL; } else { PyErr_Format(PyExc_TypeError, "slice assignment not supported"); return NULL; } Py_RETURN_NONE; """), ("get_sublist", "METH_NOARGS", """ PyType_Slot slots[] = { {0, 0}, }; PyType_Spec sublist_spec = { "sublist", 0, 0, Py_TPFLAGS_DEFAULT, slots, }; PyObject *t1 = PyTuple_Pack(1, (PyObject *)(&PyList_Type)); PyObject *ret = PyType_FromSpecWithBases(&sublist_spec, t1); Py_DECREF(t1); return ret; """)]) sublist = module.get_sublist() l = sublist(range(6)) module.setslice_slot(l, ['a']) assert l == [0, 'a', 4, 5] try: test_list_spec() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 170, in <module> test_list_spec() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_list_spec module = self.import_extension("foo", [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestListObject.test_list_macros ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_list_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_list_macros'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_list_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_list_macros'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_list_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_list_macros'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_list_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac521b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ist_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0b2160> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0b2160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ist_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_list_macros'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_list_macros'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_list_macros'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_list_macros at 0x00007fdd505a7c40> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestListObject.w_compile_module of <pypy.module.cpyext.test.test_listobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_listobject.AppTestListObject object at 0x00007fdd587a43a0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd587a4410> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 153, in <module> E test_list_macros() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_list_macros E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_list_macros(): """The PyList_* macros cast, and calls expecting that build.""" module = self.import_extension('foo', [ ("test_macro_invocations", "METH_O", """ PyObject* o = PyList_New(2); PyListObject* l = (PyListObject*)o; Py_INCREF(args); Py_INCREF(args); PyList_SET_ITEM(o, 0, args); PyList_SET_ITEM(l, 1, args); if(PyList_GET_ITEM(o, 0) != PyList_GET_ITEM(l, 1)) { PyErr_SetString(PyExc_AssertionError, "PyList_GET_ITEM error"); return NULL; } if(PyList_GET_SIZE(o) != PyList_GET_SIZE(l)) { PyErr_SetString(PyExc_AssertionError, "PyList_GET_SIZE error"); return NULL; } return o; """ ) ]) s = 'abcdef' x = module.test_macro_invocations(s) assert x[0] is x[1] is s try: test_list_macros() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 153, in <module> test_list_macros() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_list_macros module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestListObject.test_get_item_macro _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c278>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_item_macro'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_item_macro'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_item_macro'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_item_macro'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_item_macro'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_item_macro'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_item_macro'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50922340> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...item_macro'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a4e8020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a4e8020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...item_macro'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_item_macro'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_get_item_macro'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_get_item_macro'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_get_item_macro at 0x00007fdd505a7cb8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestListObject.w_compile_module of <pypy.module.cpyext.test.test_listobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_listobject.AppTestListObject object at 0x00007fdd58ab3830>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58ab38a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> E test_get_item_macro() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_get_item_macro E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_get_item_macro(): module = self.import_extension('foo', [ ("test_get_item", "METH_NOARGS", """ PyObject* o, *o2, *o3; o = PyList_New(1); o2 = PyBytes_FromString("test_get_item0"); Py_INCREF(o2); PyList_SET_ITEM(o, 0, o2); o3 = PyList_GET_ITEM(o, 0); Py_INCREF(o3); Py_DECREF(o); Py_DECREF(o2); return o3; """)]) assert module.test_get_item() == b'test_get_item0' try: test_get_item_macro() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> test_get_item_macro() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_get_item_macro module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestListObject.test_item_refcounts _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_item_refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_item_refcounts'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_item_refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_item_refcounts'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_item_refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_item_refcounts'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_item_refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd78cab9c0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58b5a3a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58b5a3a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_item_refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_item_refcounts'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_item_refcounts'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_item_refcounts at 0x00007fdd505a7d30> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestListObject.w_compile_module of <pypy.module.cpyext.test.test_listobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_listobject.AppTestListObject object at 0x00007fdd6abea2f8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6abea368> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 202, in <module> E test_item_refcounts() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_item_refcounts E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_item_refcounts(): """PyList_SET_ITEM leaks a reference to the target.""" module = self.import_extension('foo', [ ("test_refcount_diff", "METH_VARARGS", """ /* test that the refcount differences for functions * are correct. diff1 - expected refcount diff for i1, * diff2 - expected refcount diff for i2 */ #define CHECKCOUNT(diff1, diff2, action) \ new_count1 = Py_REFCNT(i1); \ new_count2 = Py_REFCNT(i2); \ diff = new_count1 - old_count1; \ if (diff != diff1) {\ sprintf(errbuffer, action \ " i1 expected diff of %ld got %ld", (long)diff1, (long)diff); \ PyErr_SetString(PyExc_AssertionError, errbuffer); \ return NULL; } \ diff = new_count2 - old_count2; \ if (diff != diff2) {\ sprintf(errbuffer, action \ " i2 expected diff of %ld got %ld", (long)diff2, (long)diff); \ PyErr_SetString(PyExc_AssertionError, errbuffer); \ return NULL; } \ old_count1 = new_count1; \ old_count2 = new_count2; PyObject* tmp, *o = PyList_New(0); char errbuffer[1024]; PyObject* i1 = PyTuple_GetItem(args, 0); PyObject* i2 = PyTuple_GetItem(args, 1); Py_ssize_t old_count1, new_count1; Py_ssize_t old_count2, new_count2; Py_ssize_t diff; int ret; old_count1 = Py_REFCNT(i1); old_count2 = Py_REFCNT(i2); ret = PyList_Append(o, i1); if (ret != 0) return NULL; /* check the result of Append(), and also force the list to use the CPyListStrategy now */ if (PyList_GET_ITEM(o, 0) != i1) { PyErr_SetString(PyExc_AssertionError, "Append() error?"); return NULL; } CHECKCOUNT(1, 0, "PyList_Append"); Py_INCREF(i2); /* for PyList_SET_ITEM */ CHECKCOUNT(0, 1, "Py_INCREF"); PyList_SET_ITEM(o, 0, i2); CHECKCOUNT(0, 0, "PyList_SET_ITEM"); tmp = PyList_GET_ITEM(o, 0); if (tmp != i2) { PyErr_SetString(PyExc_AssertionError, "SetItem() error?"); return NULL; } CHECKCOUNT(0, 0, "PyList_GET_ITEM"); PyList_SetItem(o, 0, i1); CHECKCOUNT(0, -1, "PyList_Set_Item"); PyList_GetItem(o, 0); CHECKCOUNT(0, 0, "PyList_Get_Item"); Py_DECREF(o); #ifndef PYPY_VERSION { // PyPy deletes only at teardown CHECKCOUNT(-1, 0, "Py_DECREF(o)"); } #endif return PyLong_FromSsize_t(0); """)]) assert module.test_refcount_diff(["first"], ["second"]) == 0 try: test_item_refcounts() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 202, in <module> test_item_refcounts() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_item_refcounts module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestLongObject.test_fromunsignedlong ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunsignedlong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromunsignedlong'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunsignedlong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromunsignedlong'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunsignedlong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromunsignedlong'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunsignedlong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d55358> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...signedlong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b1d2520> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b1d2520> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...signedlong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunsignedlong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fromunsignedlong'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fromunsignedlong'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fromunsignedlong at 0x00007fdd6a66e638> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd697109f8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69710cd0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> E test_fromunsignedlong() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromunsignedlong E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fromunsignedlong(): module = self.import_extension('foo', [ ("from_unsignedlong", "METH_NOARGS", """ PyObject * obj; obj = PyLong_FromUnsignedLong((unsigned long)-1); if (obj->ob_type != &PyLong_Type) { Py_DECREF(obj); PyErr_SetString(PyExc_ValueError, "PyLong_FromLongLong did not return PyLongObject"); return NULL; } return obj; """), ]) import struct max_ul = struct.unpack_from('L', b'\xff'*8)[0] assert module.from_unsignedlong() == max_ul try: test_fromunsignedlong() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> test_fromunsignedlong() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromunsignedlong module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestLongObject.test_fromlonglong ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromlonglong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromlonglong'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromlonglong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromlonglong'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromlonglong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromlonglong'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromlonglong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a6ba5e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...omlonglong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a668020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a668020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...omlonglong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromlonglong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fromlonglong'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fromlonglong'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fromlonglong at 0x00007fdd6a66e6b0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd6a612138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a6121a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 159, in <module> E test_fromlonglong() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromlonglong E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fromlonglong(): module = self.import_extension('foo', [ ("from_longlong", "METH_VARARGS", """ int val; PyObject * obj; if (!PyArg_ParseTuple(args, "i", &val)) return NULL; obj = PyLong_FromLongLong((long long)val); if (obj->ob_type != &PyLong_Type) { Py_DECREF(obj); PyErr_SetString(PyExc_ValueError, "PyLong_FromLongLong did not return PyLongObject"); return NULL; } return obj; """), ("from_unsignedlonglong", "METH_VARARGS", """ int val; PyObject * obj; if (!PyArg_ParseTuple(args, "i", &val)) return NULL; obj = PyLong_FromUnsignedLongLong((long long)val); if (obj->ob_type != &PyLong_Type) { Py_DECREF(obj); PyErr_SetString(PyExc_ValueError, "PyLong_FromLongLong did not return PyLongObject"); return NULL; } return obj; """)]) assert module.from_longlong(-1) == -1 assert module.from_longlong(0) == 0 assert module.from_unsignedlonglong(0) == 0 assert module.from_unsignedlonglong(-1) == (1<<64) - 1 try: test_fromlonglong() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 159, in <module> test_fromlonglong() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromlonglong module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestLongObject.test_from_size_t ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_from_size_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_from_size_t'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_from_size_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_from_size_t'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_from_size_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_from_size_t'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_from_size_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50ce20e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...rom_size_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58d3a460> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58d3a460> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...rom_size_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_from_size_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_from_size_t'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_from_size_t'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_from_size_t at 0x00007fdd6a66e728> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd79bae838>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79b60560> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> E test_from_size_t() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_from_size_t E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_from_size_t(): module = self.import_extension('foo', [ ("from_unsignedlong", "METH_NOARGS", """ return PyLong_FromSize_t((size_t)-1); """)]) import sys assert module.from_unsignedlong() == 2 * sys.maxsize + 1 try: test_from_size_t() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> test_from_size_t() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_from_size_t module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestLongObject.test_from_long _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aadb268>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_from_long'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_from_long'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_from_long'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_from_long'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_from_long'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_from_long'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_from_long'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58ce4278> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._from_long'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68a853e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68a853e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._from_long'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_from_long'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_from_long'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_from_long'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_from_long at 0x00007fdd6a66e7a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd7b218138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b2181a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> E test_from_long() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_from_long E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_from_long(): module = self.import_extension('foo', [ ("asunsignedlong", "METH_O", """ unsigned long n = PyLong_AsUnsignedLong(args); if ((long)n == -1 && PyErr_Occurred()) { return NULL; } return PyLong_FromUnsignedLong(n); """), ("assize_t", "METH_O", """ size_t n = PyLong_AsSize_t(args); if ((long)n == -1 && PyErr_Occurred()) { return NULL; } return PyLong_FromSize_t(n); """), ("asunsignedlonglong", "METH_O", """ unsigned long n = PyLong_AsUnsignedLongLong(args); if ((long)n == -1 && PyErr_Occurred()) { return NULL; } return PyLong_FromUnsignedLongLong(n); """)]) with raises(OverflowError): module.asunsignedlong(-1) with raises(OverflowError): module.asunsignedlonglong(-1) assert module.assize_t(100) == 100 try: test_from_long() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> test_from_long() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_from_long module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestLongObject.test_fromstring _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7af68c50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromstring'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromstring'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromstring'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50b9a278> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a56a1e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a56a1e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromstring'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fromstring'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fromstring'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fromstring at 0x00007fdd6a66e818> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd7943c598>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7943c608> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> E test_fromstring() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromstring E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fromstring(): module = self.import_extension('foo', [ ("from_string", "METH_NOARGS", """ return PyLong_FromString("0x1234", NULL, 0); """), ]) assert module.from_string() == 0x1234 try: test_fromstring() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> test_fromstring() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromstring module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestLongObject.test_frombytearray _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frombytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_frombytearray'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frombytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_frombytearray'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frombytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_frombytearray'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frombytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58cea778> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...mbytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5af460> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5af460> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...mbytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frombytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_frombytearray'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_frombytearray'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_frombytearray at 0x00007fdd6a66e890> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd6abcd5c8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6abcd670> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> E test_frombytearray() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_frombytearray E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_frombytearray(): module = self.import_extension('foo', [ ("from_bytearray", "METH_VARARGS", """ int little_endian, is_signed; if (!PyArg_ParseTuple(args, "ii", &little_endian, &is_signed)) return NULL; return _PyLong_FromByteArray((unsigned char*)"\\x9A\\xBC", 2, little_endian, is_signed); """), ]) assert module.from_bytearray(True, False) == 0xBC9A assert module.from_bytearray(True, True) == -0x4366 assert module.from_bytearray(False, False) == 0x9ABC assert module.from_bytearray(False, True) == -0x6544 try: test_frombytearray() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> test_frombytearray() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_frombytearray module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestLongObject.test_frombytearray_2 ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c6b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frombytearray_2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_frombytearray_2'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frombytearray_2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_frombytearray_2'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frombytearray_2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_frombytearray_2'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frombytearray_2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50ce20e8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ytearray_2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5010e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5010e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ytearray_2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frombytearray_2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_frombytearray_2'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_frombytearray_2'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_frombytearray_2 at 0x00007fdd6a66e908> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd7a7e21e0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7a7e2250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> E test_frombytearray_2() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_frombytearray_2 E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_frombytearray_2(): module = self.import_extension('foo', [ ("from_bytearray", "METH_VARARGS", """ int little_endian, is_signed; if (!PyArg_ParseTuple(args, "ii", &little_endian, &is_signed)) return NULL; return _PyLong_FromByteArray((unsigned char*)"\\x9A\\xBC\\x41", 3, little_endian, is_signed); """), ]) assert module.from_bytearray(True, False) == 0x41BC9A assert module.from_bytearray(True, True) == 0x41BC9A assert module.from_bytearray(False, False) == 0x9ABC41 assert module.from_bytearray(False, True) == -0x6543BF try: test_frombytearray_2() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> test_frombytearray_2() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_frombytearray_2 module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestLongObject.test_asbytearray ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_asbytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_asbytearray'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_asbytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_asbytearray'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_asbytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_asbytearray'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_asbytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58dc8980> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...sbytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a3eafe0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a3eafe0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...sbytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_asbytearray'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_asbytearray'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_asbytearray'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_asbytearray at 0x00007fdd6a66e980> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd58d1e138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58d1e1a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 162, in <module> E test_asbytearray() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_asbytearray E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_asbytearray(): module = self.import_extension('foo', [ ("as_bytearray", "METH_VARARGS", """ PyObject *result; PyLongObject *o; int n, little_endian, is_signed; unsigned char *bytes; if (!PyArg_ParseTuple(args, "O!iii", &PyLong_Type, &o, &n, &little_endian, &is_signed)) return NULL; bytes = malloc(n); if (_PyLong_AsByteArray(o, bytes, (size_t)n, little_endian, is_signed) != 0) { free(bytes); return NULL; } result = PyBytes_FromStringAndSize((const char *)bytes, n); free(bytes); return result; """), ]) s = module.as_bytearray(0x41BC9A, 4, True, False) assert s == b"\x9A\xBC\x41\x00" s = module.as_bytearray(0x41BC9A, 4, False, False) assert s == b"\x00\x41\xBC\x9A" s = module.as_bytearray(0x41BC9A, 3, True, False) assert s == b"\x9A\xBC\x41" s = module.as_bytearray(0x41BC9A, 3, True, True) assert s == b"\x9A\xBC\x41" s = module.as_bytearray(0x9876, 2, True, False) assert s == b"\x76\x98" s = module.as_bytearray(0x9876 - 0x10000, 2, True, True) assert s == b"\x76\x98" raises(OverflowError, module.as_bytearray, 0x9876, 2, False, True) raises(OverflowError, module.as_bytearray, -1, 2, True, False) raises(OverflowError, module.as_bytearray, 0x1234567, 3, True, False) try: test_asbytearray() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 162, in <module> test_asbytearray() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_asbytearray module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestLongObject.test_fromunicode ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c6b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromunicode'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromunicode'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromunicode'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d557b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...romunicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b270020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b270020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...romunicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fromunicode'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fromunicode'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fromunicode at 0x00007fdd6a66e9f8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd79785360>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd797853d0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> E test_fromunicode() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromunicode E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fromunicode(): module = self.import_extension('foo', [ ("from_unicode", "METH_O", """ _Py_COMP_DIAG_PUSH _Py_COMP_DIAG_IGNORE_DEPR_DECLS Py_UNICODE* u = PyUnicode_AsUnicode(args); _Py_COMP_DIAG_POP return Py_BuildValue("NN", PyLong_FromUnicode(u, 6, 10), PyLong_FromUnicode(u, 6, 16)); """), ]) # A string with arabic digits. 'BAD' is after the 6th character. assert module.from_unicode(u' 1\u0662\u0663\u0664BAD') == (1234, 4660) try: test_fromunicode() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> test_fromunicode() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromunicode module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestLongObject.test_fromunicodeobject ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b10fb50>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunicodeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromunicodeobject'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunicodeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromunicodeobject'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunicodeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromunicodeobject'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunicodeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b2c49d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...codeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd504a61e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd504a61e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...codeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromunicodeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fromunicodeobject'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fromunicodeobject'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fromunicodeobject at 0x00007fdd6a66ea70> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd59594288>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd595942f8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> E test_fromunicodeobject() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromunicodeobject E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fromunicodeobject(): module = self.import_extension('foo', [ ("from_unicodeobject", "METH_O", """ return Py_BuildValue("NN", PyLong_FromUnicodeObject(args, 10), PyLong_FromUnicodeObject(args, 16)); """), ]) # A string with arabic digits. assert (module.from_unicodeobject(u' 1\u0662\u0663\u0664') == (1234, 4660)) try: test_fromunicodeobject() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> test_fromunicodeobject() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromunicodeobject module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestLongObject.test_aslong _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_aslong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_aslong'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_aslong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_aslong'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_aslong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_aslong'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_aslong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd509224d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_aslong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aa815a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aa815a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_aslong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_aslong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_aslong'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_aslong'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_aslong at 0x00007fdd6a66eae8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd69716170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd697161e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 215, in <module> E test_aslong() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_aslong E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_aslong(): module = self.import_extension('foo', [ ("as_long", "METH_O", """ long n = PyLong_AsLong(args); if (n == -1 && PyErr_Occurred()) { return NULL; } return PyLong_FromLong(n); """), ("as_int", "METH_O", """ int n = _PyLong_AsInt(args); if (n == -1 && PyErr_Occurred()) { return NULL; } return PyLong_FromLong(n); """), ("long_max", "METH_NOARGS", """ return PyLong_FromLong(LONG_MAX); """ ), ("long_min", "METH_NOARGS", """ return PyLong_FromLong(LONG_MIN); """ ), ("int_max", "METH_NOARGS", """ return PyLong_FromLong(INT_MAX); """ ), ("int_min", "METH_NOARGS", """ return PyLong_FromLong(INT_MIN); """ ), ("as_unsignedlongmask", "METH_O", """ unsigned long n = PyLong_AsUnsignedLongMask(args); if (n == (unsigned long)-1 && PyErr_Occurred()) { return NULL; } return PyLong_FromLong(n); """), ]) module.as_long(123) == 123 assert module.as_long(-1) == -1 with raises(TypeError): module.as_long(1.23) == 1 LONG_MAX = module.long_max() LONG_MIN = module.long_min() assert module.as_long(LONG_MAX) == LONG_MAX raises(OverflowError, module.as_long, LONG_MAX+ 1) assert module.as_long(LONG_MIN) == LONG_MIN raises(OverflowError, module.as_long, LONG_MIN - 1) # does not raise module.as_unsignedlongmask(LONG_MAX * 10) class A: def __index__(self): return 42 def __int__(self): return 21 class B(): def __int__(self): return 21 a = A() b = B() assert int(a) == 21 # new for python3.8: first try __index__ assert module.as_long(a) == 42 assert module.as_unsignedlongmask(a) == 42 with raises(TypeError): module.as_long(b) with raises(TypeError): module.as_unsignedlongmask(b) assert module.as_int(123) == 123 assert module.as_int(-1) == -1 with raises(TypeError): module.as_int(1.23) == 1 INT_MAX = module.int_max() INT_MIN = module.int_min() assert module.as_int(INT_MAX) == INT_MAX raises(OverflowError, module.as_int, INT_MAX+ 1) assert module.as_int(INT_MIN) == INT_MIN raises(OverflowError, module.as_int, INT_MIN - 1) assert int(a) == 21 # new for python3.8: first try __index__ assert module.as_int(a) == 42 try: test_aslong() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 215, in <module> test_aslong() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_aslong module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestLongObject.test_strtol _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aadb268>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_strtol'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_strtol'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_strtol'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_strtol'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_strtol'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_strtol'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_strtol'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a7b44a8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_strtol'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58c64060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58c64060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_strtol'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_strtol'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_strtol'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_strtol'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_strtol at 0x00007fdd6a66eb60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd6a59e7c8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a59e8a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> E test_strtol() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_strtol E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_strtol(): module = self.import_extension('foo', [ ("from_str", "METH_NOARGS", """ const char *str =" 400"; char * end; if (400 != PyOS_strtoul(str, &end, 10)) return PyLong_FromLong(1); if (str + strlen(str) != end) return PyLong_FromLong(2); if (400 != PyOS_strtol(str, &end, 10)) return PyLong_FromLong(3); if (str + strlen(str) != end) return PyLong_FromLong(4); return PyLong_FromLong(0); """)]) assert module.from_str() == 0 try: test_strtol() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> test_strtol() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_strtol module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestLongObject.test_slots _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c6b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slots'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slots'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slots'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d55b50> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_slots'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50626460> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50626460> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_slots'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_slots'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_slots'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_slots at 0x00007fdd6a66ebd8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd69dc6170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69dc6250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> E test_slots() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_slots E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_slots(): module = self.import_extension('foo', [ ("has_sub", "METH_NOARGS", """ PyObject *ret, *obj = PyLong_FromLong(42); if (obj->ob_type != &PyLong_Type) ret = PyLong_FromLong(-2); else { if (obj->ob_type->tp_as_number->nb_subtract) ret = obj->ob_type->tp_as_number->nb_subtract(obj, obj); else ret = PyLong_FromLong(-1); } Py_DECREF(obj); return ret; """), ("has_pow", "METH_NOARGS", """ PyObject *ret, *obj = PyLong_FromLong(42); PyObject *one = PyLong_FromLong(1); if (obj->ob_type->tp_as_number->nb_power) ret = obj->ob_type->tp_as_number->nb_power(obj, one, one); else ret = PyLong_FromLong(-1); Py_DECREF(one); Py_DECREF(obj); return ret; """)]) assert module.has_sub() == 0 assert module.has_pow() == 0 try: test_slots() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> test_slots() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_slots module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________ AppTestLongObject.test_PyLong_AsUnsignedLongLongMask _____________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a330098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyLong_AsUnsignedLongLongMask'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyLong_AsUnsignedLongLongMask'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyLong_AsUnsignedLongLongMask'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyLong_AsUnsignedLongLongMask'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyLong_AsUnsignedLongLongMask'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyLong_AsUnsignedLongLongMask'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyLong_AsUnsignedLongLongMask'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a6862a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ngLongMask'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abe81e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abe81e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ngLongMask'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyLong_AsUnsignedLongLongMask'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_PyLong_AsUnsignedLongLongMask'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_PyLong_AsUnsignedLongLongMask'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_PyLong_AsUnsignedLongLongMask at 0x00007fdd6a66ec50> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd58d0d1a0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58d0d210> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> E test_PyLong_AsUnsignedLongLongMask() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyLong_AsUnsignedLongLongMask E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_PyLong_AsUnsignedLongLongMask(): module = self.import_extension('foo', [ ("aslongmask", "METH_O", """ uint64_t ret = PyLong_AsUnsignedLongMask(args); if (!ret) return NULL; return PyLong_FromLong(ret); """), ]) assert module.aslongmask(3) == 3 try: test_PyLong_AsUnsignedLongLongMask() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> test_PyLong_AsUnsignedLongLongMask() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyLong_AsUnsignedLongLongMask module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________ AppTestLongObject.test_as_longlong_and_overflow ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aadb268>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_as_longlong_and_overflow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_as_longlong_and_overflow'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_as_longlong_and_overflow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_as_longlong_and_overflow'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_as_longlong_and_overflow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_as_longlong_and_overflow'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_as_longlong_and_overflow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd509224d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...d_overflow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b1c6320> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b1c6320> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...d_overflow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_as_longlong_and_overflow'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_as_longlong_and_overflow'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_as_longlong_and_overflow'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_as_longlong_and_overflow at 0x00007fdd6a66ecc8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestLongObject.w_compile_module of <pypy.module.cpyext.test.test_longobject.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_longobject.AppTestLongObject object at 0x00007fdd69716288>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd697163a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> E test_as_longlong_and_overflow() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_as_longlong_and_overflow E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_as_longlong_and_overflow(): module = self.import_extension('foo', [ ("aslonglong_overflow", "METH_O", """ int overflow=0; long long ret = PyLong_AsLongLongAndOverflow(args, &overflow); return PyTuple_Pack(2, PyLong_FromLongLong(ret), PyLong_FromLong(overflow)); """), ]) assert module.aslonglong_overflow(1<<62) == (1<<62, 0) assert module.aslonglong_overflow(1<<63) == (-1, 1) assert module.aslonglong_overflow(-1<<64) == (-1, -1) try: test_as_longlong_and_overflow() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> test_as_longlong_and_overflow() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_as_longlong_and_overflow module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________ AppTestMarshal.test_PyMarshal_ReadObjectFromString ______________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a330098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyMarshal_ReadObjectFromString'...all__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyMarshal_ReadObjectFromString'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyMarshal_ReadObjectFromString'...all__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyMarshal_ReadObjectFromString'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyMarshal_ReadObjectFromString'...all__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyMarshal_ReadObjectFromString'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyMarshal_ReadObjectFromString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a7b47f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...FromString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a680020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a680020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...FromString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyMarshal_ReadObjectFromString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_PyMarshal_ReadObjectFromString'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_PyMarshal_ReadObjectFromString'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_PyMarshal_ReadObjectFromString at 0x00007fdd6a66fad8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMarshal.w_compile_module of <pypy.module.cpyext.test.test_marshal.AppTestMarsh...Marshal.w_import_extension of <pypy.module.cpyext.test.test_marshal.AppTestMarshal object at 0x00007fdd58d04138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58d04330> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> E test_PyMarshal_ReadObjectFromString() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyMarshal_ReadObjectFromString E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_PyMarshal_ReadObjectFromString(): module = self.import_extension('foo', [ ("mloads", "METH_O", """ char *input = PyBytes_AsString(args); Py_ssize_t length = PyBytes_Size(args); return PyMarshal_ReadObjectFromString(input, length); """)], prologue='#include <marshal.h>') import marshal assert module.mloads(marshal.dumps(42.5)) == 42.5 x = [None, True, (4, 5), b"adkj", u"\u1234"] assert module.mloads(marshal.dumps(x)) == x try: test_PyMarshal_ReadObjectFromString() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> test_PyMarshal_ReadObjectFromString() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyMarshal_ReadObjectFromString module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________ AppTestMarshal.test_PyMarshal_WriteObjectToString _______________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyMarshal_WriteObjectToString'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyMarshal_WriteObjectToString'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyMarshal_WriteObjectToString'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyMarshal_WriteObjectToString'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyMarshal_WriteObjectToString'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyMarshal_WriteObjectToString'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyMarshal_WriteObjectToString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51348138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ctToString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505b1760> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505b1760> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ctToString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyMarshal_WriteObjectToString'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_PyMarshal_WriteObjectToString'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_PyMarshal_WriteObjectToString'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_PyMarshal_WriteObjectToString at 0x00007fdd6a66fa60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMarshal.w_compile_module of <pypy.module.cpyext.test.test_marshal.AppTestMarsh...Marshal.w_import_extension of <pypy.module.cpyext.test.test_marshal.AppTestMarshal object at 0x00007fdd7abe80c8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7abe8138> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> E test_PyMarshal_WriteObjectToString() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyMarshal_WriteObjectToString E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_PyMarshal_WriteObjectToString(): module = self.import_extension('foo', [ ("mdumps", "METH_VARARGS", """ PyObject *obj; int version; if (!PyArg_ParseTuple(args, "Oi", &obj, &version)) return NULL; return PyMarshal_WriteObjectToString(obj, version); """)], prologue='#include <marshal.h>') import marshal for x in [42, b"foo", u"\u2345", (4, None, False)]: for version in [0, 1, 2]: assert module.mdumps(x, version) == marshal.dumps(x, version) try: test_PyMarshal_WriteObjectToString() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> test_PyMarshal_WriteObjectToString() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyMarshal_WriteObjectToString module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestPyBuffer.test_fillWithObject ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a330098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fillWithObject'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fillWithObject'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fillWithObject'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a66a3b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...WithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58bfe9a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58bfe9a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...WithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fillWithObject'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fillWithObject'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fillWithObject at 0x00007fdd6a66fc40> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBuffer.w_compile_module of <pypy.module.cpyext.test.test_memoryobject.AppTes...r.w_import_extension of <pypy.module.cpyext.test.test_memoryobject.AppTestPyBuffer object at 0x00007fdd50632bb8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd50632e58> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 149, in <module> E test_fillWithObject() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fillWithObject E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fillWithObject(): module = self.import_extension('foo', [ ("fillinfo", "METH_VARARGS", """ Py_buffer buf; PyObject * ret = NULL; PyObject *str = PyBytes_FromString("hello, world."); if (PyBuffer_FillInfo(&buf, str, PyBytes_AsString(str), 13, 0, 0)) { return NULL; } /* Get rid of our own reference to the object, but * the Py_buffer should still have a reference. */ Py_DECREF(str); ret = PyMemoryView_FromBuffer(&buf); if (((PyMemoryViewObject*)ret)->view.obj != NULL) { PyErr_SetString(PyExc_ValueError, "leaked ref"); Py_DECREF(ret); return NULL; } return ret; """)]) result = module.fillinfo() assert b"hello, world." == result try: test_fillWithObject() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 149, in <module> test_fillWithObject() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fillWithObject module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestPyBuffer.test_fromobject ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aadb790>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromobject'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromobject'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromobject'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50922890> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...fromobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a530220> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a530220> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...fromobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fromobject'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fromobject'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fromobject at 0x00007fdd6a66fd30> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBuffer.w_compile_module of <pypy.module.cpyext.test.test_memoryobject.AppTes...r.w_import_extension of <pypy.module.cpyext.test.test_memoryobject.AppTestPyBuffer object at 0x00007fdd69bd99f0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69bd9a60> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> E test_fromobject() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromobject E foo = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fromobject(): foo = self.import_extension('foo', [ ("make_view", "METH_O", """ if (!PyObject_CheckBuffer(args)) return Py_None; return PyMemoryView_FromObject(args); """)]) hello = b'hello' mview = foo.make_view(hello) assert mview[0] == hello[0] assert mview.tobytes() == hello try: test_fromobject() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in <module> test_fromobject() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fromobject foo = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestPyBuffer.test_buffer_protocol_app ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer_protocol_app'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_buffer_protocol_app'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer_protocol_app'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_buffer_protocol_app'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer_protocol_app'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_buffer_protocol_app'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer_protocol_app'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac6c188> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...otocol_app'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a7b1020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a7b1020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...otocol_app'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer_protocol_app'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_buffer_protocol_app'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_buffer_protocol_app'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_buffer_protocol_app at 0x00007fdd6a66fda8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBuffer.w_compile_module of <pypy.module.cpyext.test.test_memoryobject.AppTes...r.w_import_extension of <pypy.module.cpyext.test.test_memoryobject.AppTestPyBuffer object at 0x00007fdd6a6941a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a694250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_buffer_protocol_app() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_buffer_protocol_app E module = self.import_module(name='buffer_test') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_buffer_protocol_app(): module = self.import_module(name='buffer_test') arr = module.PyMyArray(10) y = memoryview(arr) assert y.format == 'i' assert y.shape == (10,) assert len(y) == 10 s = y[3] assert s == 3 try: test_buffer_protocol_app() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_buffer_protocol_app() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_buffer_protocol_app module = self.import_module(name='buffer_test') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestPyBuffer.test_buffer_protocol_capi ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c6b0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer_protocol_capi'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_buffer_protocol_capi'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer_protocol_capi'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_buffer_protocol_capi'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer_protocol_capi'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_buffer_protocol_capi'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer_protocol_capi'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50ce2318> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tocol_capi'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a6deb20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a6deb20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tocol_capi'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_buffer_protocol_capi'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_buffer_protocol_capi'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_buffer_protocol_capi'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_buffer_protocol_capi at 0x00007fdd6a66fe20> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBuffer.w_compile_module of <pypy.module.cpyext.test.test_memoryobject.AppTes...r.w_import_extension of <pypy.module.cpyext.test.test_memoryobject.AppTestPyBuffer object at 0x00007fdd69366138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd693661a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 213, in <module> E test_buffer_protocol_capi() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_buffer_protocol_capi E foo = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_buffer_protocol_capi(): foo = self.import_extension('foo', [ ("get_len", "METH_VARARGS", """ Py_buffer view; PyObject* obj = PyTuple_GetItem(args, 0); long ret, vlen; memset(&view, 0, sizeof(Py_buffer)); ret = PyObject_GetBuffer(obj, &view, PyBUF_FULL_RO); if (ret != 0) return NULL; vlen = view.len / view.itemsize; PyBuffer_Release(&view); return PyLong_FromLong(vlen); """), ("test_buffer", "METH_VARARGS", """ Py_buffer* view = NULL; PyObject* obj = PyTuple_GetItem(args, 0); PyObject* memoryview = PyMemoryView_FromObject(obj); if (memoryview == NULL) return NULL; view = PyMemoryView_GET_BUFFER(memoryview); Py_DECREF(memoryview); return PyLong_FromLong(view->len / view->itemsize); """), ("test_contiguous", "METH_O", """ Py_buffer* view; PyObject * memoryview; void * buf = NULL; int ret; Py_ssize_t len; memoryview = PyMemoryView_FromObject(args); if (memoryview == NULL) return NULL; view = PyMemoryView_GET_BUFFER(memoryview); Py_DECREF(memoryview); len = view->len; if (len == 0) return NULL; buf = malloc(len); ret = PyBuffer_ToContiguous(buf, view, view->len, 'A'); if (ret != 0) { free(buf); return NULL; } ret = PyBuffer_FromContiguous(view, buf, view->len, 'A'); free(buf); if (ret != 0) return NULL; Py_RETURN_NONE; """), ("get_contiguous", "METH_O", """ return PyMemoryView_GetContiguous(args, PyBUF_READ, 'C'); """), ("get_readonly", "METH_O", """ Py_buffer view; int readonly; memset(&view, 0, sizeof(view)); if (PyObject_GetBuffer(args, &view, PyBUF_SIMPLE) != 0) { return NULL; } readonly = view.readonly; PyBuffer_Release(&view); return PyLong_FromLong(readonly); """), ]) module = self.import_module(name='buffer_test') arr = module.PyMyArray(10) ten = foo.get_len(arr) assert ten == 10 ten = foo.get_len(b'1234567890') assert ten == 10 ten = foo.test_buffer(arr) assert ten == 10 foo.test_contiguous(arr) contig = foo.get_contiguous(arr) foo.test_contiguous(contig) ro = foo.get_readonly(b'abc') assert ro == 1 try: from _numpypy import multiarray as np except ImportError: skip('pypy built without _numpypy') a = np.arange(20)[::2] skip('not implemented yet') contig = foo.get_contiguous(a) foo.test_contiguous(contig) try: test_buffer_protocol_capi() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 213, in <module> test_buffer_protocol_capi() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_buffer_protocol_capi foo = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestPyBuffer.test_releasebuffer_gc _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a3304d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer_gc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_releasebuffer_gc'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer_gc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_releasebuffer_gc'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer_gc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_releasebuffer_gc'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer_gc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a65ac00> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ebuffer_gc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abb90e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abb90e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ebuffer_gc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer_gc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_releasebuffer_gc'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_releasebuffer_gc'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_releasebuffer_gc at 0x00007fdd6a66fe98> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBuffer.w_compile_module of <pypy.module.cpyext.test.test_memoryobject.AppTes...r.w_import_extension of <pypy.module.cpyext.test.test_memoryobject.AppTestPyBuffer object at 0x00007fdd594c2170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd594c21e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 191, in <module> E test_releasebuffer_gc() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 124, in test_releasebuffer_gc E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_releasebuffer_gc(): # like test_releasebuffer below, but forces a gc before the first # count check to expose premature release of the intermediate # memoryview that wraps the CPyBuffer. module = self.import_extension('foo', [ ("create_test", "METH_NOARGS", """ PyObject *obj; obj = PyObject_New(PyObject, (PyTypeObject*)type); return obj; """), ("get_cnt", "METH_NOARGS", 'return PyLong_FromLong(cnt);'), ("get_dealloc_cnt", "METH_NOARGS", 'return PyLong_FromLong(dealloc_cnt);'), ], prologue=""" static float test_data = 42.f; static int cnt=0; static int dealloc_cnt=0; static PyHeapTypeObject * type=NULL; void dealloc(PyObject *self) { dealloc_cnt++; } int getbuffer(PyObject *obj, Py_buffer *view, int flags) { cnt ++; memset(view, 0, sizeof(Py_buffer)); view->obj = obj; Py_INCREF(obj); view->ndim = 0; view->buf = (void *) &test_data; view->itemsize = sizeof(float); view->len = 1; view->strides = NULL; view->shape = NULL; view->format = "f"; return 0; } void releasebuffer(PyObject *obj, Py_buffer *view) { cnt --; } """, more_init=""" type = (PyHeapTypeObject *) PyType_Type.tp_alloc(&PyType_Type, 0); type->ht_type.tp_name = "Test"; type->ht_type.tp_basicsize = sizeof(PyObject); type->ht_name = PyUnicode_FromString("Test"); type->ht_type.tp_flags |= Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HEAPTYPE; type->ht_type.tp_flags &= ~Py_TPFLAGS_HAVE_GC; type->ht_type.tp_dealloc = dealloc; type->ht_type.tp_as_buffer = &type->as_buffer; type->as_buffer.bf_getbuffer = getbuffer; type->as_buffer.bf_releasebuffer = releasebuffer; if (PyType_Ready(&type->ht_type) < 0) INITERROR; """, ) assert module.get_cnt() == 0 a = memoryview(module.create_test()) # force gc to trigger any stray finalizers on intermediate objects self.debug_collect() assert module.get_cnt() == 1 assert module.get_dealloc_cnt() == 0 del a self.debug_collect() assert module.get_cnt() == 0 assert module.get_dealloc_cnt() == 1 try: test_releasebuffer_gc() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 191, in <module> test_releasebuffer_gc() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 124, in test_releasebuffer_gc module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestPyBuffer.test_releasebuffer ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aadb970>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_releasebuffer'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_releasebuffer'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_releasebuffer'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50922a98> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...easebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ace4060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ace4060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...easebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_releasebuffer'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_releasebuffer'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_releasebuffer'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_releasebuffer at 0x00007fdd6a66ff10> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBuffer.w_compile_module of <pypy.module.cpyext.test.test_memoryobject.AppTes...r.w_import_extension of <pypy.module.cpyext.test.test_memoryobject.AppTestPyBuffer object at 0x00007fdd6975a138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6975a1a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 190, in <module> E test_releasebuffer() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_releasebuffer E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_releasebuffer(): module = self.import_extension('foo', [ ("create_test", "METH_NOARGS", """ PyObject *obj; obj = PyObject_New(PyObject, (PyTypeObject*)type); return obj; """), ("get_cnt", "METH_NOARGS", 'return PyLong_FromLong(cnt);'), ("get_dealloc_cnt", "METH_NOARGS", 'return PyLong_FromLong(dealloc_cnt);'), ], prologue=""" static float test_data = 42.f; static int cnt=0; static int dealloc_cnt=0; static PyHeapTypeObject * type=NULL; void dealloc(PyObject *self) { dealloc_cnt++; } int getbuffer(PyObject *obj, Py_buffer *view, int flags) { cnt ++; memset(view, 0, sizeof(Py_buffer)); view->obj = obj; /* see the CPython docs for why we need this incref: https://docs.python.org/3.5/c-api/typeobj.html#c.PyBufferProcs.bf_getbuffer */ Py_INCREF(obj); view->ndim = 0; view->buf = (void *) &test_data; view->itemsize = sizeof(float); view->len = 1; view->strides = NULL; view->shape = NULL; view->format = "f"; return 0; } void releasebuffer(PyObject *obj, Py_buffer *view) { cnt --; } """, more_init=""" type = (PyHeapTypeObject *) PyType_Type.tp_alloc(&PyType_Type, 0); type->ht_type.tp_name = "Test"; type->ht_type.tp_basicsize = sizeof(PyObject); type->ht_name = PyUnicode_FromString("Test"); type->ht_type.tp_flags |= Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HEAPTYPE; type->ht_type.tp_flags &= ~Py_TPFLAGS_HAVE_GC; type->ht_type.tp_dealloc = dealloc; type->ht_type.tp_as_buffer = &type->as_buffer; type->as_buffer.bf_getbuffer = getbuffer; type->as_buffer.bf_releasebuffer = releasebuffer; if (PyType_Ready(&type->ht_type) < 0) INITERROR; """, ) import gc assert module.get_cnt() == 0 a = memoryview(module.create_test()) assert module.get_cnt() == 1 assert module.get_dealloc_cnt() == 0 del a self.debug_collect() assert module.get_cnt() == 0 assert module.get_dealloc_cnt() == 1 try: test_releasebuffer() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 190, in <module> test_releasebuffer() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_releasebuffer module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestPyBuffer.test_FromMemory_readonly ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a3304d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromMemory_readonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromMemory_readonly'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromMemory_readonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromMemory_readonly'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromMemory_readonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromMemory_readonly'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromMemory_readonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58cea958> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...y_readonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7acea020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7acea020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...y_readonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromMemory_readonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_FromMemory_readonly'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_FromMemory_readonly'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_FromMemory_readonly at 0x00007fdd6a66ff88> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBuffer.w_compile_module of <pypy.module.cpyext.test.test_memoryobject.AppTes...r.w_import_extension of <pypy.module.cpyext.test.test_memoryobject.AppTestPyBuffer object at 0x00007fdd51398fe0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd513990c0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_FromMemory_readonly() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_FromMemory_readonly E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_FromMemory_readonly(): module = self.import_extension('foo', [ ('new', 'METH_NOARGS', """ static char s[5] = "hello"; return PyMemoryView_FromMemory(s, 4, PyBUF_READ); """)]) mv = module.new() assert mv.readonly == True assert mv.tobytes() == b'hell' try: test_FromMemory_readonly() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_FromMemory_readonly() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_FromMemory_readonly module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestPyBuffer.test_FromMemory_readwrite ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromMemory_readwrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromMemory_readwrite'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromMemory_readwrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromMemory_readwrite'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromMemory_readwrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromMemory_readwrite'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromMemory_readwrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d55b50> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._readwrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7acbe020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7acbe020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._readwrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromMemory_readwrite'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_FromMemory_readwrite'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_FromMemory_readwrite'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_FromMemory_readwrite at 0x00007fdd505e0020> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBuffer.w_compile_module of <pypy.module.cpyext.test.test_memoryobject.AppTes...r.w_import_extension of <pypy.module.cpyext.test.test_memoryobject.AppTestPyBuffer object at 0x00007fdd693701e0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69370250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_FromMemory_readwrite() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_FromMemory_readwrite E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_FromMemory_readwrite(): module = self.import_extension('foo', [ ('new', 'METH_NOARGS', """ static char s[5] = "hello"; return PyMemoryView_FromMemory(s, 4, PyBUF_WRITE); """)]) mv = module.new() assert mv.readonly == False assert mv.tobytes() == b'hell' try: test_FromMemory_readwrite() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_FromMemory_readwrite() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_FromMemory_readwrite module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestPyBuffer.test_FromBuffer_NULL _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a3304d0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromBuffer_NULL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromBuffer_NULL'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromBuffer_NULL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromBuffer_NULL'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromBuffer_NULL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_FromBuffer_NULL'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromBuffer_NULL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a66a598> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...uffer_NULL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a9323e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a9323e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...uffer_NULL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_FromBuffer_NULL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_FromBuffer_NULL'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_FromBuffer_NULL'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_FromBuffer_NULL at 0x00007fdd505e0098> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBuffer.w_compile_module of <pypy.module.cpyext.test.test_memoryobject.AppTes...r.w_import_extension of <pypy.module.cpyext.test.test_memoryobject.AppTestPyBuffer object at 0x00007fdd7b2ba250>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b2ba2c0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_FromBuffer_NULL() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_FromBuffer_NULL E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_FromBuffer_NULL(): module = self.import_extension('foo', [ ('new', 'METH_NOARGS', """ Py_buffer info; if (PyBuffer_FillInfo(&info, NULL, NULL, 1, 1, PyBUF_FULL_RO) < 0) return NULL; return PyMemoryView_FromBuffer(&info); """)]) raises(ValueError, module.new) try: test_FromBuffer_NULL() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_FromBuffer_NULL() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_FromBuffer_NULL module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________ AppTestPyBuffer.test_release_before_dealloc __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aadb970>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_release_before_dealloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_release_before_dealloc'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_release_before_dealloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_release_before_dealloc'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_release_before_dealloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_release_before_dealloc'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_release_before_dealloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50ce2458> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...re_dealloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b204a60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b204a60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...re_dealloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_release_before_dealloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_release_before_dealloc'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_release_before_dealloc'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_release_before_dealloc at 0x00007fdd505e0110> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBuffer.w_compile_module of <pypy.module.cpyext.test.test_memoryobject.AppTes...r.w_import_extension of <pypy.module.cpyext.test.test_memoryobject.AppTestPyBuffer object at 0x00007fdd693030c0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd693031a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 178, in <module> E test_release_before_dealloc() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_release_before_dealloc E module = self.import_extension("foo", [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_release_before_dealloc(): module = self.import_extension("foo", [ ("get_type","METH_NOARGS", """ return PyType_FromSpec(&HeapCTypeWithBuffer_spec); """)], prologue=""" typedef struct { PyObject_HEAD int value; } HeapCTypeObject; typedef struct { HeapCTypeObject base; char buffer[4]; } HeapCTypeWithBufferObject; static int heapctypewithbuffer_getbuffer(HeapCTypeWithBufferObject *self, Py_buffer *view, int flags) { self->buffer[0] = '1'; self->buffer[1] = '2'; self->buffer[2] = '3'; self->buffer[3] = '4'; int ret = PyBuffer_FillInfo( view, (PyObject*)self, (void *)self->buffer, 4, 1, flags); return ret; } static void heapctypewithbuffer_releasebuffer(HeapCTypeWithBufferObject *self, Py_buffer *view) { /* Make sure this is called before the dealloc */ assert(view->obj == (void*) self); } static PyType_Slot HeapCTypeWithBuffer_slots[] = { {Py_bf_getbuffer, heapctypewithbuffer_getbuffer}, {Py_bf_releasebuffer, heapctypewithbuffer_releasebuffer}, {0, 0}, }; static PyType_Spec HeapCTypeWithBuffer_spec = { "HeapCTypeWithBuffer", sizeof(HeapCTypeWithBufferObject), 0, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, HeapCTypeWithBuffer_slots }; """) HeapCTypeWithBuffer = module.get_type() inst = HeapCTypeWithBuffer() b = bytes(inst) assert b == b"1234" # release the buffer del inst import gc; gc.collect() try: test_release_before_dealloc() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 178, in <module> test_release_before_dealloc() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_release_before_dealloc module = self.import_extension("foo", [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestMethodObject.test_call_METH_NOARGS ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_NOARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_NOARGS'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_NOARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_NOARGS'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_NOARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_NOARGS'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_NOARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58ceab38> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ETH_NOARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd503f8460> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd503f8460> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ETH_NOARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_NOARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_call_METH_NOARGS'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_METH_NOARGS'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_call_METH_NOARGS at 0x00007fdd505e05c0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd51399168>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5138ead8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> E test_call_METH_NOARGS() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_call_METH_NOARGS E mod = self.import_extension('MyModule', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_call_METH_NOARGS(): mod = self.import_extension('MyModule', [ ('getarg_NO', 'METH_NOARGS', ''' if(args) { Py_INCREF(args); return args; } else { Py_INCREF(Py_None); return Py_None; } ''' ), ]) assert mod.getarg_NO() is None excinfo = raises(TypeError, mod.getarg_NO, 1) assert "(1 given)" in str(excinfo.value) raises(TypeError, mod.getarg_NO, 1, 1) try: test_call_METH_NOARGS() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> test_call_METH_NOARGS() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_call_METH_NOARGS mod = self.import_extension('MyModule', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestMethodObject.test_call_METH_O _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_O'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_O'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_O'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_O'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_O'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_O'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_O'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508d16f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...all_METH_O'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd503ec020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd503ec020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...all_METH_O'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_O'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_call_METH_O'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_METH_O'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_call_METH_O at 0x00007fdd505e0638> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd69c708a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69c70918> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> E test_call_METH_O() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_call_METH_O E mod = self.import_extension('MyModule', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_call_METH_O(): mod = self.import_extension('MyModule', [ ('getarg_O', 'METH_O', ''' Py_INCREF(args); return args; ''' ), ]) assert mod.getarg_O(1) == 1 assert mod.getarg_O.__name__ == "getarg_O" raises(TypeError, mod.getarg_O) raises(TypeError, mod.getarg_O, 1, 1) try: test_call_METH_O() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> test_call_METH_O() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_call_METH_O mod = self.import_extension('MyModule', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestMethodObject.test_call_METH_VARARGS __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aadb970>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_VARARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_VARARGS'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_VARARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_VARARGS'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_VARARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_VARARGS'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_VARARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b2c55d8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...TH_VARARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd791de7e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd791de7e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...TH_VARARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_VARARGS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_call_METH_VARARGS'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_METH_VARARGS'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_call_METH_VARARGS at 0x00007fdd505e06b0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd58ef4138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58ef4250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> E test_call_METH_VARARGS() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_call_METH_VARARGS E mod = self.import_extension('MyModule', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_call_METH_VARARGS(): mod = self.import_extension('MyModule', [ ('getarg_VARARGS', 'METH_VARARGS', ''' return Py_BuildValue("Ol", args, args->ob_refcnt); ''' ), ]) # check that we pass the expected tuple of arguments AND that the # recnt is 1. In particular, on PyPy refcnt==1 means that we created # the PyObject tuple directly, without passing from a w_tuple; as # such, the tuple will be immediately freed after the call, without # having to wait until the GC runs. # tup, refcnt = mod.getarg_VARARGS() assert tup == () # the empty tuple is shared on CPython, so the refcnt will be >1. On # PyPy it is not shared, though. if not self.runappdirect: assert refcnt == 1 # tup, refcnt = mod.getarg_VARARGS(1) assert tup == (1,) assert refcnt == 1 # tup, refcnt = mod.getarg_VARARGS(1, 2, 3) assert tup == (1, 2, 3) assert refcnt == 1 # raises(TypeError, mod.getarg_VARARGS, k=1) try: test_call_METH_VARARGS() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> test_call_METH_VARARGS() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_call_METH_VARARGS mod = self.import_extension('MyModule', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________ AppTestMethodObject.test_call_METH_VARARGS_FASTCALL ______________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_VARARGS_FASTCALL'>, '...lticall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_VARARGS_FASTCALL'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_VARARGS_FASTCALL'>, '...lticall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_VARARGS_FASTCALL'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_VARARGS_FASTCALL'>, '...lticall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_VARARGS_FASTCALL'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_VARARGS_FASTCALL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50ce2458> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...S_FASTCALL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0b2120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0b2120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...S_FASTCALL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_VARARGS_FASTCALL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_call_METH_VARARGS_FASTCALL'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_METH_VARARGS_FASTCALL'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_call_METH_VARARGS_FASTCALL at 0x00007fdd505e0728> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd68126138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd681261a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> E test_call_METH_VARARGS_FASTCALL() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_call_METH_VARARGS_FASTCALL E mod = self.import_extension('MyModule', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_call_METH_VARARGS_FASTCALL(): mod = self.import_extension('MyModule', [ ('getarg_VA_FASTCALL', 'METH_VARARGS | METH_FASTCALL', ''' PyObject *arg_tuple = PyTuple_New(len_args); for (Py_ssize_t i =0 ; i < len_args; i++) { Py_INCREF(args[i]); PyTuple_SetItem(arg_tuple, i, args[i]); } return arg_tuple; ''' ), ]) tup = mod.getarg_VA_FASTCALL() assert tup == () tup = mod.getarg_VA_FASTCALL(1) assert tup == (1,) tup = mod.getarg_VA_FASTCALL(1, 2, 3) assert tup == (1, 2, 3) raises(TypeError, mod.getarg_VA_FASTCALL, k=1) try: test_call_METH_VARARGS_FASTCALL() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> test_call_METH_VARARGS_FASTCALL() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_call_METH_VARARGS_FASTCALL mod = self.import_extension('MyModule', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________ AppTestMethodObject.test_call_METH_KEYWORDS __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a3307a0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_KEYWORDS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_KEYWORDS'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_KEYWORDS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_KEYWORDS'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_KEYWORDS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_KEYWORDS'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_KEYWORDS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58dc8b38> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...H_KEYWORDS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58ce01a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58ce01a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...H_KEYWORDS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_KEYWORDS'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_call_METH_KEYWORDS'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_METH_KEYWORDS'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_call_METH_KEYWORDS at 0x00007fdd505e07a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd6ad74288>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ad743a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> E test_call_METH_KEYWORDS() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_call_METH_KEYWORDS E mod = self.import_extension('MyModule', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_call_METH_KEYWORDS(): mod = self.import_extension('MyModule', [ ('getarg_KW', 'METH_VARARGS | METH_KEYWORDS', ''' if (!kwargs) kwargs = Py_None; return Py_BuildValue("OO", args, kwargs); ''' ), ]) assert mod.getarg_KW(1) == ((1,), None) assert mod.getarg_KW(1, 2) == ((1, 2), None) assert mod.getarg_KW(a=3, b=4) == ((), {'a': 3, 'b': 4}) assert mod.getarg_KW(1, 2, a=3, b=4) == ((1, 2), {'a': 3, 'b': 4}) assert mod.getarg_KW.__name__ == "getarg_KW" assert mod.getarg_KW(*(), **{}) == ((), {}) try: test_call_METH_KEYWORDS() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> test_call_METH_KEYWORDS() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_call_METH_KEYWORDS mod = self.import_extension('MyModule', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________ AppTestMethodObject.test_call_METH_KEYWORDS_FASTCALL _____________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_KEYWORDS_FASTCALL'>, ...ticall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_KEYWORDS_FASTCALL'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_KEYWORDS_FASTCALL'>, ...ticall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_KEYWORDS_FASTCALL'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_KEYWORDS_FASTCALL'>, ...ticall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_call_METH_KEYWORDS_FASTCALL'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_KEYWORDS_FASTCALL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd513482c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...S_FASTCALL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd502ec320> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd502ec320> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...S_FASTCALL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_call_METH_KEYWORDS_FASTCALL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_call_METH_KEYWORDS_FASTCALL'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_call_METH_KEYWORDS_FASTCALL'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_call_METH_KEYWORDS_FASTCALL at 0x00007fdd505e0818> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd68520678>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd685207c8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 158, in <module> E test_call_METH_KEYWORDS_FASTCALL() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_call_METH_KEYWORDS_FASTCALL E mod = self.import_extension('MyModule', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_call_METH_KEYWORDS_FASTCALL(): mod = self.import_extension('MyModule', [ ('getarg_KW_FASTCALL', 'METH_FASTCALL | METH_KEYWORDS', ''' Py_ssize_t len_all_args = len_args; if (!kwnames) { kwnames = Py_None; } else { len_all_args += PyTuple_Size(kwnames); } PyObject *arg_tuple = PyTuple_New(len_all_args); for (Py_ssize_t i = 0 ; i < len_all_args; i++) { Py_INCREF(args[i]); PyTuple_SetItem(arg_tuple, i, args[i]); } return Py_BuildValue("NO", arg_tuple, kwnames); ''' ), ]) assert mod.getarg_KW_FASTCALL(1) == ((1,), None) assert mod.getarg_KW_FASTCALL(1, 2) == ((1, 2), None) assert mod.getarg_KW_FASTCALL(a=3, b=4) == ((3, 4), ('a', 'b')) assert mod.getarg_KW_FASTCALL(1, 2, a=3, b=4) == ((1, 2, 3, 4), ('a', 'b')) assert mod.getarg_KW_FASTCALL.__name__ == "getarg_KW_FASTCALL" assert mod.getarg_KW_FASTCALL(*(), **{}) == ((), None) res = mod.getarg_KW_FASTCALL(1, 2, a=5, b=6, *[3, 4], **{'c': 7}) assert res[0][:4] == (1, 2, 3, 4) # positional # keyword arguments may be ordered differently so compare as dict: assert dict(zip(res[1], res[0][4:])) == {'a': 5, 'b': 6, 'c': 7} args = tuple(range(50)) kwargs = {str(i): i for i in range(100)} res = mod.getarg_KW_FASTCALL(*args, **kwargs) assert res[0][:len(args)] == args assert dict(zip(res[1], res[0][len(args):])) == kwargs try: test_call_METH_KEYWORDS_FASTCALL() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 158, in <module> test_call_METH_KEYWORDS_FASTCALL() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_call_METH_KEYWORDS_FASTCALL mod = self.import_extension('MyModule', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestMethodObject.test_func_attributes ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a3307a0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_func_attributes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_func_attributes'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_func_attributes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_func_attributes'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_func_attributes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_func_attributes'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_func_attributes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac3e778> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...attributes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50300060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50300060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...attributes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_func_attributes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_func_attributes'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_func_attributes'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_func_attributes at 0x00007fdd505e0890> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd594d91d8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd594d9408> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 162, in <module> E test_func_attributes() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_func_attributes E mod = self.import_extension('MyModule', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_func_attributes(): mod = self.import_extension('MyModule', [ ('isCFunction', 'METH_O', ''' if(PyCFunction_Check(args)) { PyCFunctionObject* func = (PyCFunctionObject*)args; return PyUnicode_FromString(func->m_ml->ml_name); } else { Py_RETURN_FALSE; } ''' ), ('getModule', 'METH_O', ''' if(PyCFunction_Check(args)) { PyCFunctionObject* func = (PyCFunctionObject*)args; Py_INCREF(func->m_module); return func->m_module; } else { Py_RETURN_FALSE; } ''' ), ('isSameFunction', 'METH_O', ''' PyCFunction ptr = PyCFunction_GetFunction(args); if (!ptr) return NULL; if (ptr == (PyCFunction)MyModule_getModule) Py_RETURN_TRUE; else Py_RETURN_FALSE; ''' ), ]) assert mod.isCFunction(mod.getModule) == "getModule" assert mod.getModule(mod.getModule) == 'MyModule' if self.runappdirect: # XXX: fails untranslated assert mod.isSameFunction(mod.getModule) raises(SystemError, mod.isSameFunction, 1) try: test_func_attributes() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 162, in <module> test_func_attributes() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_func_attributes mod = self.import_extension('MyModule', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________ AppTestMethodObject.test_function_as_method __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aadb970>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_function_as_method'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_function_as_method'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_function_as_method'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_function_as_method'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_function_as_method'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_function_as_method'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_function_as_method'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50ce26b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._as_method'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50300020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50300020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._as_method'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_function_as_method'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_function_as_method'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_function_as_method'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_function_as_method at 0x00007fdd505e0908> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd5903e250>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5903e2c0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> E test_function_as_method() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_function_as_method E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_function_as_method(): # Unlike user functions, builtins don't become methods mod = self.import_extension('foo', [ ('f', 'METH_NOARGS', ''' return PyLong_FromLong(42); '''), ]) class A(object): pass A.f = mod.f A.g = lambda: 42 # Unbound method assert A.f() == A.g() == 42 # Bound method assert A().f() == 42 raises(TypeError, A().g) try: test_function_as_method() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> test_function_as_method() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_function_as_method mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestMethodObject.test_check ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a3307a0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_check'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_check'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_check'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58dc8d18> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58782020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58782020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_check'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_check'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_check at 0x00007fdd505e0980> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd594c22c0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd594c23d8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> E test_check() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_check E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_check(): mod = self.import_extension('foo', [ ('check', 'METH_O', ''' return PyLong_FromLong(PyCFunction_Check(args)); '''), ]) from math import degrees assert mod.check(degrees) == 1 assert mod.check(list) == 0 assert mod.check(sorted) == 1 def func(): pass class A(object): def meth(self): pass @staticmethod def stat(): pass assert mod.check(func) == 0 assert mod.check(A) == 0 assert mod.check(A.meth) == 0 assert mod.check(A.stat) == 0 try: test_check() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> test_check() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_check mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestMethodObject.test_module_attribute ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_module_attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_module_attribute'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_module_attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_module_attribute'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_module_attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_module_attribute'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_module_attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51340638> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a592120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a592120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_module_attribute'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_module_attribute'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_module_attribute'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_module_attribute at 0x00007fdd505e09f8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd512c4288>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd512c43a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> E test_module_attribute() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_module_attribute E mod = self.import_extension('MyModule', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_module_attribute(): mod = self.import_extension('MyModule', [ ('getarg_NO', 'METH_NOARGS', ''' Py_INCREF(Py_None); return Py_None; ''' ), ]) assert mod.getarg_NO() is None assert mod.getarg_NO.__module__ == 'MyModule' mod.getarg_NO.__module__ = 'foobar' assert mod.getarg_NO.__module__ == 'foobar' try: test_module_attribute() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> test_module_attribute() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_module_attribute mod = self.import_extension('MyModule', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestMethodObject.test_callfunc _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a3307a0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_callfunc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_callfunc'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_callfunc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_callfunc'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_callfunc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_callfunc'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_callfunc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51350ac0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_callfunc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58c44020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58c44020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_callfunc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_callfunc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_callfunc'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_callfunc'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_callfunc at 0x00007fdd505e0a70> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd58dd01e0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58dd0250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 161, in <module> E test_callfunc() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_callfunc E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_callfunc(): mod = self.import_extension('foo', [ ('callfunc', 'METH_VARARGS', ''' PyObject *func, *argseq=NULL, *kwargs=NULL; if (!PyArg_ParseTuple(args, "O|OO", &func, &argseq, &kwargs)) { return NULL; } if (!PyCFunction_Check(func)) { Py_RETURN_FALSE; } if (argseq == NULL) { return PyCFunction_Call(func, NULL, NULL); } if (kwargs == NULL) { return PyCFunction_Call(func, argseq, NULL); } return PyCFunction_Call(func, argseq, kwargs); ''' ), # Define some C functions so we can test this ('func_NOARGS', 'METH_NOARGS', ''' Py_RETURN_TRUE; '''), ('func_KW', 'METH_VARARGS | METH_KEYWORDS', ''' if (!kwargs) kwargs = Py_None; return Py_BuildValue("OO", args, kwargs); ''' ), ]) ret = mod.callfunc(mod.func_NOARGS, ()) assert ret is True ret = mod.callfunc(mod.func_KW, (1, 2, 3), {'a':'a', 'b':'b', 'c':'c'}) assert ret == ((1, 2, 3), {'a':'a', 'b':'b', 'c':'c'}) with raises(TypeError): mod.callfunc(mod.func_NOARGS, (), {'a': 'a'}) with raises(TypeError): mod.callfunc(mod.func_NOARGS, (1, 2, 3)) try: test_callfunc() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 161, in <module> test_callfunc() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_callfunc mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestMethodObject.test_wrapper _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7aadb970>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_wrapper'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_wrapper'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_wrapper'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_wrapper'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_wrapper'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_wrapper'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_wrapper'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51334138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_wrapper'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68ad4020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68ad4020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_wrapper'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_wrapper'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_wrapper'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_wrapper'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_wrapper at 0x00007fdd505e0ae8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd69742138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd697421a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> E test_wrapper() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_wrapper E mod = self.import_module(name="specmethdocstring") E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_wrapper(): # Copy the Cython 3.0.0alpha10 version of specmethodstring tests mod = self.import_module(name="specmethdocstring") c = mod.C() assert c.__iter__.__doc__ == "usable docstring" assert mod.C.__qualname__ == "C" assert c.__iter__.__qualname__ == "C.__iter__" assert type(c.__iter__).__doc__.startswith('instancemethod(function, instance)') assert mod.C.__next__.__doc__ == "usable docstring" assert mod.C.__next__.__text_signature__ == '($self, /)' try: test_wrapper() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> test_wrapper() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_wrapper mod = self.import_module(name="specmethdocstring") ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestMethodObject.test_module_name _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a3307a0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_module_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_module_name'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_module_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_module_name'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_module_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_module_name'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_module_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58dc8e58> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...odule_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68ab0020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd68ab0020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...odule_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_module_name'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_module_name'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_module_name'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_module_name at 0x00007fdd505e0b60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd58786138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd587861a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in <module> E test_module_name() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_module_name E mod = self.import_module(name="test_func") E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_module_name(): # issue 3993 mod = self.import_module(name="test_func") assert mod.f.__module__ == "test_func" try: test_module_name() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in <module> test_module_name() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_module_name mod = self.import_module(name="test_func") ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestMethodObject.test_min_max _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_min_max'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_min_max'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_min_max'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_min_max'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_min_max'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_min_max'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_min_max'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51340610> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_min_max'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd502f2060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd502f2060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_min_max'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_min_max'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_min_max'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_min_max'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_min_max at 0x00007fdd505e0bd8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMethodObject.w_compile_module of <pypy.module.cpyext.test.test_methodobject.Ap...import_extension of <pypy.module.cpyext.test.test_methodobject.AppTestMethodObject object at 0x00007fdd69b9a598>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69b9a608> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 124, in <module> E test_min_max() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_min_max E mod = self.import_module(name="builtin_min_max") E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_min_max(): mod = self.import_module(name="builtin_min_max") mod.test_max2() try: test_min_max() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 124, in <module> test_min_max() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_min_max mod = self.import_module(name="builtin_min_max") ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestMisc.test_pyos_inputhook ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a3307a0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyos_inputhook'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyos_inputhook'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyos_inputhook'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyos_inputhook'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyos_inputhook'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pyos_inputhook'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyos_inputhook'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a6ba930> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._inputhook'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e0aca0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e0aca0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._inputhook'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pyos_inputhook'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pyos_inputhook'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pyos_inputhook'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pyos_inputhook at 0x00007fdd505e0d40> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMisc.w_compile_module of <pypy.module.cpyext.test.test_misc.AppTestMisc object...d AppTestMisc.w_import_extension of <pypy.module.cpyext.test.test_misc.AppTestMisc object at 0x00007fdd50633210>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd50633bb0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> E test_pyos_inputhook() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_pyos_inputhook E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pyos_inputhook(): module = self.import_extension('foo', [ ("set_pyos_inputhook", "METH_NOARGS", ''' PyOS_InputHook = &my_callback; Py_RETURN_NONE; '''), ("fetch_value", "METH_NOARGS", ''' return PyLong_FromLong(my_flag); '''), ], prologue=''' static long my_flag = 0; static int my_callback(void) { return ++my_flag; } ''') try: import __pypy__ except ImportError: skip("only runs on top of pypy") assert module.fetch_value() == 0 __pypy__.pyos_inputhook() assert module.fetch_value() == 0 module.set_pyos_inputhook() # <= set assert module.fetch_value() == 0 __pypy__.pyos_inputhook() assert module.fetch_value() == 1 __pypy__.pyos_inputhook() assert module.fetch_value() == 2 assert module.fetch_value() == 2 try: test_pyos_inputhook() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> test_pyos_inputhook() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_pyos_inputhook module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestModuleObject.test_getdef_basic _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getdef_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getdef_basic'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getdef_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getdef_basic'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getdef_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getdef_basic'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getdef_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50922a98> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tdef_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e0bd20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e0bd20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tdef_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getdef_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_getdef_basic'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_getdef_basic'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_getdef_basic at 0x00007fdd505e16a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestModuleObject.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestM...ect.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestModuleObject object at 0x00007fdd797ee250>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd797ee598> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> E test_getdef_basic() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getdef_basic E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_getdef_basic(): module = self.import_extension('foo', [ ("check_getdef_same", "METH_NOARGS", """ return PyBool_FromLong(PyModule_GetDef(self) == &moduledef); """ )], prologue=""" static struct PyModuleDef moduledef; """) assert module.check_getdef_same() # module-level functions must have __self__ set to the module # so that inspect.signature() can strip the $module parameter (issue 5368) assert module.check_getdef_same.__self__ is module try: test_getdef_basic() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> test_getdef_basic() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getdef_basic module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestModuleObject.test_getstate _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58592020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getstate'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getstate'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getstate'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58ce4408> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_getstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58562060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58562060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_getstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_getstate'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_getstate'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_getstate at 0x00007fdd505e1718> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestModuleObject.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestM...ect.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestModuleObject object at 0x00007fdd516763a0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd516764b8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_getstate() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getstate E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_getstate(): module = self.import_extension('foo', [ ("check_mod_getstate", "METH_NOARGS", """ struct module_state { int foo[51200]; }; static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, "module_getstate_myextension", NULL, sizeof(struct module_state) }; PyObject *module = PyModule_Create(&moduledef); int *p = (int *)PyModule_GetState(module); int i; for (i = 0; i < 51200; i++) if (p[i] != 0) return PyBool_FromLong(0); Py_DECREF(module); return PyBool_FromLong(1); """ )]) assert module.check_mod_getstate() try: test_getstate() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_getstate() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getstate module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestModuleObject.test___file__ _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test___file__'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test___file__'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test___file__'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test___file__'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test___file__'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test___file__'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test___file__'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51340980> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t___file__'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b1f6a60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b1f6a60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t___file__'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test___file__'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test___file__'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test___file__'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test___file__ at 0x00007fdd505e1790> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestModuleObject.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestM...ect.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestModuleObject object at 0x00007fdd797e0f70>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd797e1018> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> E test___file__() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test___file__ E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test___file__(): module = self.import_extension('foo', [ ("check___file__", "METH_NOARGS", """ PyObject * f = PyUnicode_InternFromString("__file__"); PyObject *result = PyObject_GetItem(pyx_d, f); Py_XINCREF(result); Py_DECREF(f); return result; """ )], prologue=""" static PyObject * pyx_d; """, more_init=""" pyx_d = PyModule_GetDict(mod); """) assert 'foo' in module.check___file__() try: test___file__() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> test___file__() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test___file__ module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestModuleObject.test_PyModule_AddType ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyModule_AddType'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyModule_AddType'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyModule_AddType'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyModule_AddType'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyModule_AddType'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyModule_AddType'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyModule_AddType'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a796548> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...le_AddType'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7af88360> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7af88360> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...le_AddType'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyModule_AddType'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_PyModule_AddType'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_PyModule_AddType'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_PyModule_AddType at 0x00007fdd505e1808> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestModuleObject.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestM...ect.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestModuleObject object at 0x00007fdd6ac4a480>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ac4a608> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 154, in <module> E test_PyModule_AddType() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyModule_AddType E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_PyModule_AddType(): module = self.import_extension('foo', [ ('is_ascii', "METH_O", ''' if (!PyUnicode_Check(args)) { Py_RETURN_FALSE; } if (PyUnicode_IS_ASCII(args)) { Py_RETURN_TRUE; } Py_RETURN_FALSE; '''), ], prologue=""" #include <Python.h> PyTypeObject PyUnicodeSubtype = { PyVarObject_HEAD_INIT(NULL,0) "foo.subtype", /* tp_name*/ sizeof(PyUnicodeObject), /* tp_basicsize*/ 0 /* tp_itemsize */ }; """, more_init = ''' PyUnicodeSubtype.tp_alloc = NULL; PyUnicodeSubtype.tp_free = NULL; PyUnicodeSubtype.tp_flags = Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE; PyUnicodeSubtype.tp_itemsize = sizeof(char); PyUnicodeSubtype.tp_base = &PyUnicode_Type; PyModule_AddType(mod, &PyUnicodeSubtype); ''') a = module.subtype('abc') assert module.is_ascii(a) is True try: test_PyModule_AddType() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 154, in <module> test_PyModule_AddType() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_PyModule_AddType module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestModuleObject.test_getobject ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getobject'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getobject'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getobject'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f9e9a8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._getobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7af88120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7af88120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._getobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_getobject'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_getobject'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_getobject at 0x00007fdd505e1880> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestModuleObject.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestM...ect.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestModuleObject object at 0x00007fdd797ee608>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd797ee678> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> E test_getobject() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getobject E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_getobject(): module = self.import_extension('foo', [ ('get_name', "METH_O", """ return PyModule_GetNameObject(args); """), ('get_file', "METH_O", """ return PyModule_GetFilenameObject(args); """),]) import os assert module.get_name(module) == "foo" # should return full path to file with `foo.pypy*` file = module.get_file(module) assert "foo.pypy" in file assert os.path.exists(file) try: test_getobject() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> test_getobject() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getobject module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestModuleObject.test_basic ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58592020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_basic'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_basic'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_basic'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd78cab9c0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58b20020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58b20020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_basic'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_basic'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_basic at 0x00007fdd505e18f8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestModuleObject.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestM...ect.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestModuleObject object at 0x00007fdd594a32f0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd594a3360> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in <module> E test_basic() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_basic E module = self.import_module(name='multiphase', use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_basic(): from types import ModuleType module = self.import_module(name='multiphase', use_imp=True) assert isinstance(module, ModuleType) assert module.__name__ == 'multiphase' assert module.__doc__ == "example docstring" try: test_basic() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in <module> test_basic() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_basic module = self.import_module(name='multiphase', use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestModuleObject.test_getdef ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a3307a0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getdef'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getdef'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getdef'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getdef'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getdef'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getdef'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getdef'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51340c28> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_getdef'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd794e1a20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd794e1a20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_getdef'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getdef'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_getdef'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_getdef'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_getdef at 0x00007fdd505e1970> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestModuleObject.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestM...ect.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestModuleObject object at 0x00007fdd797c4410>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd797c4480> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in <module> E test_getdef() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_getdef E module = self.import_module(name='multiphase', use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_getdef(): from types import ModuleType module = self.import_module(name='multiphase', use_imp=True) assert module.check_getdef_same() try: test_getdef() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in <module> test_getdef() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_getdef module = self.import_module(name='multiphase', use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestModuleObject.test_slots1 ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58592020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slots1'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slots1'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slots1'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58cde598> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_slots1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abb9120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6abb9120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_slots1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots1'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_slots1'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_slots1'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_slots1 at 0x00007fdd505e19e8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestModuleObject.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestM...ect.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestModuleObject object at 0x00007fdd7b206608>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b206b80> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 167, in <module> E test_slots1() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 160, in test_slots1 E module = self.import_module(name='multiphase', body=body, init=init, E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_slots1(): from types import ModuleType body = """ static PyModuleDef multiphase_def; static PyObject* multiphase_create(PyObject *spec, PyModuleDef *def) { PyObject *module = PyModule_New("altname"); PyObject_SetAttrString(module, "create_spec", spec); PyObject_SetAttrString(module, "create_def_eq", PyBool_FromLong(def == &multiphase_def)); return module; } static int multiphase_exec(PyObject* module) { Py_INCREF(Py_True); PyObject_SetAttrString(module, "exec_called", Py_True); return 0; } static PyModuleDef_Slot multiphase_slots[] = { {Py_mod_create, multiphase_create}, {Py_mod_exec, multiphase_exec}, {0, NULL} }; static PyModuleDef multiphase_def = { PyModuleDef_HEAD_INIT, /* m_base */ "multiphase", /* m_name */ "example docstring", /* m_doc */ 0, /* m_size */ NULL, /* m_methods */ multiphase_slots, /* m_slots */ NULL, /* m_traverse */ NULL, /* m_clear */ NULL, /* m_free */ }; """ init = """ return PyModuleDef_Init(&multiphase_def); """ module = self.import_module(name='multiphase', body=body, init=init, use_imp=True) assert module.create_spec assert module.create_spec is module.__spec__ assert module.create_def_eq assert module.exec_called try: test_slots1() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 167, in <module> test_slots1() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 160, in test_slots1 module = self.import_module(name='multiphase', body=body, init=init, ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestModuleObject.test_slots2 ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slots2'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slots2'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_slots2'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f9ed18> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_slots2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd506020e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd506020e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_slots2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_slots2'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_slots2'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_slots2'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_slots2 at 0x00007fdd505e1a60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestModuleObject.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestM...ect.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestModuleObject object at 0x00007fdd797eec28>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd797eed40> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 169, in <module> E test_slots2() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 162, in test_slots2 E module = self.import_module(name='multiphase', body=body, init=init, E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_slots2(): from types import ModuleType body = """ static PyModuleDef multiphase_def; static PyObject* multiphase_create(PyObject *spec, PyModuleDef *def) { PyObject *name = PyUnicode_FromString("altname"); PyObject *module = PyModule_NewObject(name); Py_DECREF(name); PyObject_SetAttrString(module, "create_spec", spec); PyObject_SetAttrString(module, "create_def_eq", PyBool_FromLong(def == &multiphase_def)); return module; } static int multiphase_exec(PyObject* module) { Py_INCREF(Py_True); PyObject_SetAttrString(module, "exec_called", Py_True); return 0; } static PyModuleDef_Slot multiphase_slots[] = { {Py_mod_create, multiphase_create}, {Py_mod_exec, multiphase_exec}, {0, NULL} }; static PyModuleDef multiphase_def = { PyModuleDef_HEAD_INIT, /* m_base */ "multiphase", /* m_name */ "example docstring", /* m_doc */ 0, /* m_size */ NULL, /* m_methods */ multiphase_slots, /* m_slots */ NULL, /* m_traverse */ NULL, /* m_clear */ NULL, /* m_free */ }; """ init = """ return PyModuleDef_Init(&multiphase_def); """ module = self.import_module(name='multiphase', body=body, init=init, use_imp=True) assert module.create_spec assert module.create_spec is module.__spec__ assert module.create_def_eq assert module.exec_called try: test_slots2() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 169, in <module> test_slots2() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 162, in test_slots2 module = self.import_module(name='multiphase', body=body, init=init, ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestModuleObject.test_forget_init _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58592020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forget_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_forget_init'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forget_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_forget_init'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forget_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_forget_init'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forget_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b27c110> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...orget_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505f4020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505f4020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...orget_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_forget_init'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_forget_init'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_forget_init'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_forget_init at 0x00007fdd505e1ad8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestModuleObject.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestM...ect.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestModuleObject object at 0x00007fdd58ef42f8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58ef4410> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> E test_forget_init() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in test_forget_init E raises(SystemError, self.import_module, name='multiphase', body=body, E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 46, in raises E func(*args, **kwargs) E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_forget_init(): from types import ModuleType body = """ static PyModuleDef multiphase_def = { PyModuleDef_HEAD_INIT, /* m_base */ "multiphase", /* m_name */ "example docstring", /* m_doc */ 0, /* m_size */ }; """ init = """ return (PyObject *) &multiphase_def; """ raises(SystemError, self.import_module, name='multiphase', body=body, init=init, use_imp=True) try: test_forget_init() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> test_forget_init() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 133, in test_forget_init raises(SystemError, self.import_module, name='multiphase', body=body, File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 46, in raises func(*args, **kwargs) File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestMultiPhase.test__testmultiphase ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test__testmultiphase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test__testmultiphase'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test__testmultiphase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test__testmultiphase'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test__testmultiphase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test__testmultiphase'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test__testmultiphase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd508d1880> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...multiphase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505fa020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505fa020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...multiphase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test__testmultiphase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test__testmultiphase'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test__testmultiphase'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test__testmultiphase at 0x00007fdd505e0f20> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd692f2170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd508ef280> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 150, in <module> E test__testmultiphase() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in test__testmultiphase E module = self.import_module(name=self.name, use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test__testmultiphase(): import sys from importlib import machinery, util module = self.import_module(name=self.name, use_imp=True) finder = machinery.FileFinder(None) spec = util.find_spec(self.name) assert spec assert module.__name__ == self.name #assert module.__file__ == spec.origin assert module.__package__ == '' raises(AttributeError, 'module.__path__') assert module is sys.modules[self.name] assert isinstance(module.__loader__, machinery.ExtensionFileLoader) try: test__testmultiphase() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 150, in <module> test__testmultiphase() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in test__testmultiphase module = self.import_module(name=self.name, use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestMultiPhase.test_functionality _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58592020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_functionality'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_functionality'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_functionality'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_functionality'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_functionality'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_functionality'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_functionality'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abe6278> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ctionality'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aec0160> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aec0160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ctionality'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_functionality'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_functionality'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_functionality'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_functionality at 0x00007fdd505e0f98> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd6a99d1a0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ad75f68> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 153, in <module> E test_functionality() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in test_functionality E module = self.import_module(name=self.name, use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_functionality(): import types module = self.import_module(name=self.name, use_imp=True) assert isinstance(module, types.ModuleType) ex = module.Example() assert ex.demo('abcd') == 'abcd' assert ex.demo() is None raises(AttributeError, 'ex.abc') ex.abc = 0 assert ex.abc == 0 assert module.foo(9, 9) == 18 assert isinstance(module.Str(), str) assert module.Str(1) + '23' == '123' raises(module.error, 'raise module.error()') assert module.int_const == 1969 assert module.str_const == 'something different' try: test_functionality() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 153, in <module> test_functionality() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in test_functionality module = self.import_module(name=self.name, use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestMultiPhase.test_reload _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_reload'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_reload'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_reload'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_reload'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_reload'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_reload'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_reload'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f9ed18> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_reload'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aea8020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aea8020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_reload'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_reload'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_reload'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_reload'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_reload at 0x00007fdd505e1010> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd692f81a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7951cbb8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> E test_reload() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in test_reload E module = self.import_module(name=self.name, use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_reload(): import importlib module = self.import_module(name=self.name, use_imp=True) ex_class = module.Example # Simulate what importlib.reload() does, without recomputing the spec module.__spec__.loader.exec_module(module) assert ex_class is module.Example try: test_reload() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> test_reload() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in test_reload module = self.import_module(name=self.name, use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestMultiPhase.test_try_registration ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_try_registration'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_try_registration'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_try_registration'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_try_registration'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_try_registration'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_try_registration'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_try_registration'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b27c228> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...gistration'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aea4020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aea4020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...gistration'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_try_registration'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_try_registration'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_try_registration'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_try_registration at 0x00007fdd505e1088> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd58770218>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5055afa8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> E test_try_registration() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_try_registration E module = self.import_module(name=self.name, use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_try_registration(): module = self.import_module(name=self.name, use_imp=True) assert module.call_state_registration_func(0) is None with raises(SystemError): module.call_state_registration_func(1) with raises(SystemError): module.call_state_registration_func(2) try: test_try_registration() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> test_try_registration() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_try_registration module = self.import_module(name=self.name, use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestMultiPhase.test_bad_modules ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bad_modules'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bad_modules'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bad_modules'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bad_modules'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bad_modules'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_bad_modules'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bad_modules'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51340980> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ad_modules'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a68c5a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a68c5a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ad_modules'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_bad_modules'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_bad_modules'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_bad_modules'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_bad_modules at 0x00007fdd505e1178> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd687849f8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ad7fa60> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 156, in <module> E test_bad_modules() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in test_bad_modules E module = self.import_module(name=self.name, use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_bad_modules(): # XXX: not a very good test, since most internal issues in cpyext # cause SystemErrors. module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path for name in [ 'bad_slot_large', 'bad_slot_negative', 'create_int_with_state', 'negative_size', 'create_null', 'create_raise', 'create_unreported_exception', 'nonmodule_with_exec_slots', 'exec_err', 'exec_raise', 'exec_unreported_exception', ]: raises(SystemError, self.load_from_name, name, origin) try: test_bad_modules() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 156, in <module> test_bad_modules() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in test_bad_modules module = self.import_module(name=self.name, use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestMultiPhase.test_export_null ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58592020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_null'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_null'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_null'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_null'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_null'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_null'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_null'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abe6250> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...xport_null'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a68cde0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a68cde0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...xport_null'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_null'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_export_null'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_export_null'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_export_null at 0x00007fdd505e11f0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd6a786170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd592599b8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_export_null() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_export_null E excinfo = raises(SystemError, self.load_from_name, 'export_null') E ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 46, in raises E func(*args, **kwargs) E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 114, in w_load_from_name E module = self.import_module(name=self.name, use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_export_null(): excinfo = raises(SystemError, self.load_from_name, 'export_null') assert "initialization" in excinfo.value.args[0] assert "without raising" in excinfo.value.args[0] try: test_export_null() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_export_null() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_export_null excinfo = raises(SystemError, self.load_from_name, 'export_null') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 46, in raises func(*args, **kwargs) File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 114, in w_load_from_name module = self.import_module(name=self.name, use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestMultiPhase.test_export_uninit _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_uninit'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_uninit'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_uninit'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_uninit'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_uninit'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_uninit'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_uninit'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51334138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ort_uninit'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aec82e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aec82e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ort_uninit'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_uninit'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_export_uninit'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_export_uninit'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_export_uninit at 0x00007fdd505e1268> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd69142170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69c97440> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_export_uninit() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_export_uninit E excinfo = raises(SystemError, self.load_from_name, 'export_uninitialized') E ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 46, in raises E func(*args, **kwargs) E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 114, in w_load_from_name E module = self.import_module(name=self.name, use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_export_uninit(): excinfo = raises(SystemError, self.load_from_name, 'export_uninitialized') assert "init function" in excinfo.value.args[0] assert "uninitialized object" in excinfo.value.args[0] try: test_export_uninit() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_export_uninit() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_export_uninit excinfo = raises(SystemError, self.load_from_name, 'export_uninitialized') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 46, in raises func(*args, **kwargs) File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 114, in w_load_from_name module = self.import_module(name=self.name, use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestMultiPhase.test_export_raise ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58592020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_raise'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_raise'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_raise'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_raise'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_raise'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_raise'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_raise'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b27ce30> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...port_raise'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a396020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a396020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...port_raise'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_raise'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_export_raise'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_export_raise'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_export_raise at 0x00007fdd505e12e0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd5054e1a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ac02e58> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> E test_export_raise() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_export_raise E excinfo = raises(SystemError, self.load_from_name, 'export_raise') E ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 46, in raises E func(*args, **kwargs) E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 114, in w_load_from_name E module = self.import_module(name=self.name, use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_export_raise(): excinfo = raises(SystemError, self.load_from_name, 'export_raise') assert "bad export function" == excinfo.value.args[0] try: test_export_raise() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> test_export_raise() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_export_raise excinfo = raises(SystemError, self.load_from_name, 'export_raise') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 46, in raises func(*args, **kwargs) File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 114, in w_load_from_name module = self.import_module(name=self.name, use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestMultiPhase.test_export_unreported ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_unreported'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_unreported'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_unreported'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_unreported'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_unreported'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_export_unreported'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_unreported'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd513482c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...unreported'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505f4020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505f4020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...unreported'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_export_unreported'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_export_unreported'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_export_unreported'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_export_unreported at 0x00007fdd505e1358> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd6975a2c0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7abcb948> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_export_unreported() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_export_unreported E excinfo = raises(SystemError, self.load_from_name, 'export_unreported_exception') E ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 46, in raises E func(*args, **kwargs) E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 114, in w_load_from_name E module = self.import_module(name=self.name, use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_export_unreported(): excinfo = raises(SystemError, self.load_from_name, 'export_unreported_exception') assert "initialization" in excinfo.value.args[0] assert "unreported exception" in excinfo.value.args[0] try: test_export_unreported() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_export_unreported() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_export_unreported excinfo = raises(SystemError, self.load_from_name, 'export_unreported_exception') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 46, in raises func(*args, **kwargs) File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 114, in w_load_from_name module = self.import_module(name=self.name, use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestMultiPhase.test_unloadable_nonascii __________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b...nfo.value.name == '_testmultiphase_' + name ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AssertionError > func = <function <lambda> at 0x00007fdd58592020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_unloadable_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unloadable_nonascii'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_unloadable_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unloadable_nonascii'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_unloadable_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_unloadable_nonascii'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_unloadable_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abe6f70> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...e_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5124c060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5124c060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...e_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_unloadable_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_unloadable_nonascii'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_unloadable_nonascii'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_unloadable_nonascii at 0x00007fdd505e13d0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd6a648170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b1aac28> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_unloadable_nonascii() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in test_unloadable_nonascii E assert excinfo.value.name == '_testmultiphase_' + name E ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E AssertionError tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_unloadable_nonascii(): name = u"fo\xf3" excinfo = raises(ImportError, self.load_from_name, name) assert excinfo.value.name == '_testmultiphase_' + name try: test_unloadable_nonascii() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_unloadable_nonascii() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in test_unloadable_nonascii assert excinfo.value.name == '_testmultiphase_' + name ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AssertionError _______________________ AppTestMultiPhase.test_nonascii ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_nonascii'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_nonascii'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_nonascii'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51334098> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e0aca0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58e0aca0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nonascii'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_nonascii'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_nonascii'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_nonascii at 0x00007fdd505e1448> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd69142330>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69c4adb0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 149, in <module> E test_nonascii() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_nonascii E module = self.import_module(name=self.name, use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_nonascii(): module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path cases = [ ('_testmultiphase_zkou\u0161ka_na\u010dten\xed', 'Czech'), ('\uff3f\u30a4\u30f3\u30dd\u30fc\u30c8\u30c6\u30b9\u30c8', 'Japanese'), ] for name, lang in cases: module = self.load_from_name(name, origin=origin, use_prefix=False) assert module.__name__ == name assert module.__doc__ == "Module named in %s" % lang try: test_nonascii() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 149, in <module> test_nonascii() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_nonascii module = self.import_module(name=self.name, use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestMultiPhase.test_get_module _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd51673da8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_module'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_module'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_module'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_module'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_module'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_module'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_module'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58ce4408> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...get_module'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505cc860> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505cc860> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...get_module'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_module'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_get_module'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_get_module'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_get_module at 0x00007fdd505e14c0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd6a629520>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ac02170> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 142, in <module> E test_get_module() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_get_module E module = self.load_from_name("meth_state_access") E ^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 114, in w_load_from_name E module = self.import_module(name=self.name, use_imp=True) E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_get_module(): module = self.load_from_name("meth_state_access") print("module", dir(module)) instance0 = module.StateAccessType() assert instance0.get_defining_module() == module try: test_get_module() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 142, in <module> test_get_module() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in test_get_module module = self.load_from_name("meth_state_access") ^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 114, in w_load_from_name module = self.import_module(name=self.name, use_imp=True) ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestMultiPhase.test_fromdefandspec _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromdefandspec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromdefandspec'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromdefandspec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromdefandspec'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromdefandspec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fromdefandspec'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromdefandspec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51340ed0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...defandspec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0be020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0be020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...defandspec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fromdefandspec'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fromdefandspec'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fromdefandspec'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fromdefandspec at 0x00007fdd505e1538> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestMultiPhase.w_compile_module of <pypy.module.cpyext.test.test_module.AppTestMul...Phase.w_import_extension of <pypy.module.cpyext.test.test_module.AppTestMultiPhase object at 0x00007fdd69152170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ad78218> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 169, in <module> E test_fromdefandspec() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in test_fromdefandspec E module = self.import_extension("get_mod", [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_from_name(self, name, origin=None, use_prefix=True): from importlib import machinery, util if not origin: module = self.import_module(name=self.name, use_imp=True) origin = module.__loader__.path if use_prefix: name = '_testmultiphase_' + name loader = machinery.ExtensionFileLoader(name, origin) spec = util.spec_from_loader(name, loader) module = util.module_from_spec(spec) loader.exec_module(module) return module type(self).load_from_name = w_load_from_name def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.name = '_testmultiphase' self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fromdefandspec(): import sys import warnings prologue = """ static struct PyModuleDef foo2moduledef = { PyModuleDef_HEAD_INIT, "foo2", /* m_name */ NULL, /* m_doc */ 0, /* m_size */ NULL /* m_methods */ }; """ module = self.import_extension("get_mod", [ ('fromdefandspec', "METH_O", """ return PyModule_FromDefAndSpec2(&foo2moduledef, args, 1013); """), ('fromdefandspec2', "METH_O", """ return PyModule_FromDefAndSpec2(&foo2moduledef, args, 2); """), ], prologue=prologue) class Spec: name = "foo2" spec = Spec() with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always", RuntimeWarning) foo2 = module.fromdefandspec2(spec) assert foo2.__name__ == "foo2" foo2 = module.fromdefandspec(spec) assert foo2.__name__ == "foo2" try: test_fromdefandspec() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 169, in <module> test_fromdefandspec() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in test_fromdefandspec module = self.import_extension("get_mod", [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestNamespace.test_simple _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58592020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_simple'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_simple'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_simple'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abe72b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0c02a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0c02a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_simple'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_simple'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_simple at 0x00007fdd7b2ec200> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestNamespace.w_compile_module of <pypy.module.cpyext.test.test_namespaceobject.Ap...import_extension of <pypy.module.cpyext.test.test_namespaceobject.AppTestNamespace object at 0x00007fdd6a6483d8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a649c90> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> E test_simple() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_simple E module = self.import_extension('ns', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_simple(): from types import SimpleNamespace module = self.import_extension('ns', [ ("new", "METH_O", """ return _PyNamespace_New(args); """)], prologue='#include "pycore_namespace.h"') assert module.new({'a': 1, 'b': 2}) == SimpleNamespace(a=1, b=2) try: test_simple() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> test_simple() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_simple module = self.import_extension('ns', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________________ AppTestCNumber.test_Check ___________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Check'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Check'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Check'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f9ef98> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b07a020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b07a020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Check'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_Check'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_Check'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_Check at 0x00007fdd6a5a4020> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCNumber.w_compile_module of <pypy.module.cpyext.test.test_number.AppTestCNumbe...tCNumber.w_import_extension of <pypy.module.cpyext.test.test_number.AppTestCNumber object at 0x00007fdd69a72988>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69a73ef8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 171, in <module> E test_Check() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_Check E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_Check(): import sys mod = self.import_extension('foo', [ ("PyNumber_Check", "METH_O", ''' int val = PyNumber_Check(args); return PyLong_FromLong(val); '''), ("PyIndex_Check", "METH_O", ''' int val = PyIndex_Check(args); return PyLong_FromLong(val); '''), ]) if 0: val = mod.PyNumber_Check(10) assert val == 1 assert mod.PyIndex_Check(12) assert mod.PyIndex_Check(-12) assert not mod.PyIndex_Check(12.1) assert not mod.PyIndex_Check('12') assert not mod.PyIndex_Check(1 + 3j) assert mod.PyNumber_Check(12) assert mod.PyNumber_Check(-12) assert mod.PyNumber_Check(12.1) assert not mod.PyNumber_Check('12') assert mod.PyNumber_Check(1 + 3j) # class MyIndex: def __index__(self): return 42 val = mod.PyNumber_Check(MyIndex()) assert val == 1 # issue 3383: CPython only checks for the presence of __index__, # not that it is valid class Raises: def __index__(self): raise ValueError(42) class Missing: pass m = Raises() assert mod.PyIndex_Check(m) m = Missing() assert not mod.PyIndex_Check(m) try: test_Check() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 171, in <module> test_Check() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_Check mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestCNumber.test_number_tobase _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_number_tobase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_number_tobase'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_number_tobase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_number_tobase'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_number_tobase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_number_tobase'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_number_tobase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58ce46d8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ber_tobase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aebc020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aebc020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ber_tobase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_number_tobase'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_number_tobase'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_number_tobase'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_number_tobase at 0x00007fdd6a5a4098> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCNumber.w_compile_module of <pypy.module.cpyext.test.test_number.AppTestCNumbe...tCNumber.w_import_extension of <pypy.module.cpyext.test.test_number.AppTestCNumber object at 0x00007fdd6a798410>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a7984f0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 168, in <module> E test_number_tobase() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_number_tobase E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_number_tobase(): import sys mod = self.import_extension('foo', [ ("pynumber_tobase", "METH_VARARGS", """ PyObject *obj; int base; if (!PyArg_ParseTuple(args, "Oi:pynumber_tobase", &obj, &base)) { return NULL; } return PyNumber_ToBase(obj, base); """)]) assert mod.pynumber_tobase(123, 2) == '0b1111011' assert mod.pynumber_tobase(123, 8) == '0o173' assert mod.pynumber_tobase(123, 10) == '123' assert mod.pynumber_tobase(123, 16) == '0x7b' assert mod.pynumber_tobase(-123, 2) == '-0b1111011' assert mod.pynumber_tobase(-123, 8) == '-0o173' assert mod.pynumber_tobase(-123, 10) == '-123' assert mod.pynumber_tobase(-123, 16) == '-0x7b' try: mod.pynumber_tobase(123.0, 10) except TypeError: pass else: assert False, 'expected TypeError' try: mod.pynumber_tobase('123', 10) except TypeError: pass else: assert False, 'expected TypeError' if 'PyPy' in sys.version or sys.version_info >= (3,7): # bpo 38643 try: mod.pynumber_tobase(123, 0) except SystemError: pass else: assert False, 'expected TypeError' # large number: num = 2**66 assert mod.pynumber_tobase(num, 2) == '0b1' + '0' * 66 assert mod.pynumber_tobase(num, 8) == '0o10000000000000000000000' assert mod.pynumber_tobase(num, 10) == str(num) assert mod.pynumber_tobase(num, 16) == '0x40000000000000000' try: test_number_tobase() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 168, in <module> test_number_tobase() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_number_tobase mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestCNumber.test_number_to_ssize_t _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58592020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_number_to_ssize_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_number_to_ssize_t'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_number_to_ssize_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_number_to_ssize_t'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_number_to_ssize_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_number_to_ssize_t'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_number_to_ssize_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5130bdf8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...to_ssize_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b084060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b084060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...to_ssize_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_number_to_ssize_t'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_number_to_ssize_t'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_number_to_ssize_t'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_number_to_ssize_t at 0x00007fdd6a5a4110> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestCNumber.w_compile_module of <pypy.module.cpyext.test.test_number.AppTestCNumbe...tCNumber.w_import_extension of <pypy.module.cpyext.test.test_number.AppTestCNumber object at 0x00007fdd69a42138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69a421a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> E test_number_to_ssize_t() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_number_to_ssize_t E mod = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_number_to_ssize_t(): import sys mod = self.import_extension('foo', [ ("to_ssize_t", "METH_VARARGS", """ PyObject *obj; PyObject *exc = NULL; long long value; if (!PyArg_ParseTuple(args, "O|O:to_ssize_t", &obj, &exc)) { return NULL; } if (exc == NULL) { // printf("got no exc\\n"); } else { // printf("got exc\\n"); } value = PyNumber_AsSsize_t(obj, exc); if (PyErr_Occurred()) { return NULL; } return PyLong_FromLongLong(value); """)]) assert mod.to_ssize_t(2 ** 68) == sys.maxsize assert mod.to_ssize_t(12) == 12 raises(TypeError, mod.to_ssize_t, 2 ** 68, TypeError) try: test_number_to_ssize_t() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> test_number_to_ssize_t() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_number_to_ssize_t mod = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestObject.test_object_malloc _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_malloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_object_malloc'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_malloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_object_malloc'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_malloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_object_malloc'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_malloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6abed858> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ect_malloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58d0b120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58d0b120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ect_malloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_malloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_object_malloc'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_object_malloc'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_object_malloc at 0x00007fdd6a5a4980> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd6ad4a410>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ad4a678> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> E test_object_malloc() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_object_malloc E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_object_malloc(): module = self.import_extension('foo', [ ("malloctest", "METH_NOARGS", """ PyObject *obj = PyObject_MALLOC(sizeof(PyFloatObject)); obj = PyObject_Init(obj, &PyFloat_Type); if (obj != NULL) ((PyFloatObject *)obj)->ob_fval = -12.34; return obj; """)]) x = module.malloctest() assert type(x) is float assert x == -12.34 try: test_object_malloc() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> test_object_malloc() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_object_malloc module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestObject.test_object_calloc _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_calloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_object_calloc'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_calloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_object_calloc'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_calloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_object_calloc'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_calloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd512fc138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ect_calloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aec82e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aec82e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ect_calloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_calloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_object_calloc'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_object_calloc'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_object_calloc at 0x00007fdd6a5a49f8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd7ad5c288>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ad5c2c0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> E test_object_calloc() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_object_calloc E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_object_calloc(): module = self.import_extension('foo', [ ("calloctest", "METH_NOARGS", """ PyObject *obj = PyObject_Calloc(1, sizeof(PyFloatObject)); if (obj == NULL) return NULL; obj = PyObject_Init(obj, &PyFloat_Type); return obj; """)]) x = module.calloctest() assert type(x) is float assert x == 0.0 try: test_object_calloc() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> test_object_calloc() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_object_calloc module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestObject.test_object_realloc _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_realloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_object_realloc'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_realloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_object_realloc'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_realloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_object_realloc'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_realloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd795318d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ct_realloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd502f2260> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd502f2260> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ct_realloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_object_realloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_object_realloc'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_object_realloc'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_object_realloc at 0x00007fdd6a5a4a70> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd5141e288>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5141e2c0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 146, in <module> E test_object_realloc() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in test_object_realloc E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_object_realloc(): if not self.runappdirect: skip('no untranslated support for realloc') module = self.import_extension('foo', [ ("realloctest", "METH_NOARGS", """ PyObject * ret; char *copy, *orig = PyObject_MALLOC(12); memcpy(orig, "hello world", 12); copy = PyObject_REALLOC(orig, 15); /* realloc() takes care of freeing orig, if changed */ if (copy == NULL) Py_RETURN_NONE; ret = PyBytes_FromStringAndSize(copy, 12); PyObject_Free(copy); return ret; """)]) x = module.realloctest() assert x == b'hello world\x00' try: test_object_realloc() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 146, in <module> test_object_realloc() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in test_object_realloc module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestObject.test_TypeCheck _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_TypeCheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_TypeCheck'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_TypeCheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_TypeCheck'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_TypeCheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_TypeCheck'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_TypeCheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5130bdf8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._TypeCheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ace4060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ace4060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._TypeCheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_TypeCheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_TypeCheck'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_TypeCheck'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_TypeCheck at 0x00007fdd6a5a4ae8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd797e10c0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd797e10f8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_TypeCheck() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_TypeCheck E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_TypeCheck(): module = self.import_extension('foo', [ ("typecheck", "METH_VARARGS", """ PyObject *obj = PyTuple_GET_ITEM(args, 0); PyTypeObject *type = (PyTypeObject *)PyTuple_GET_ITEM(args, 1); return PyBool_FromLong(PyObject_TypeCheck(obj, type)); """)]) assert module.typecheck(1, int) assert module.typecheck('foo', str) assert module.typecheck('foo', object) assert module.typecheck(True, bool) assert module.typecheck(1.2, float) assert module.typecheck(int, type) try: test_TypeCheck() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_TypeCheck() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_TypeCheck module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________________ AppTestObject.test_print ___________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_print'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_print'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_print'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_print'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_print'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_print'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_print'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58cde700> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_print'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aebc060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aebc060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_print'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_print'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_print'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_print'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_print at 0x00007fdd6a5a4b60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd6ad20330>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ad20368> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 174, in <module> E test_print() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_print E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_print(): module = self.import_extension('foo', [ ("dump", "METH_VARARGS", """ PyObject *fname = PyTuple_GetItem(args, 0); PyObject *obj = PyTuple_GetItem(args, 1); FILE *fp = fopen(_PyUnicode_AsString(fname), "wb"); int ret; if (fp == NULL) Py_RETURN_NONE; ret = PyObject_Print(obj, fp, Py_PRINT_RAW); if (ret < 0) { fclose(fp); return NULL; } ret = PyObject_Print(NULL, fp, Py_PRINT_RAW); if (ret < 0) { fclose(fp); return NULL; } fclose(fp); Py_RETURN_TRUE; """), ("print_empty", "METH_O", """ FILE *fp = fopen(_PyUnicode_AsString(args), "wb"); if (fp == NULL) Py_RETURN_NONE; PyObject *obj = PyUnicode_FromStringAndSize(NULL, 0); int ret = PyObject_Print(obj, fp, 0); fclose(fp); if (ret < 0) { return NULL; } Py_RETURN_TRUE; """)]) assert module.dump(self.tmpname, None) result = '' with open(self.tmpname) as fid: result = fid.read() assert result == 'None<nil>' assert module.print_empty(self.tmpname) with open(self.tmpname) as fid: result = fid.read() # print("result=", result, len(result)) assert result == "''" try: test_print() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 174, in <module> test_print() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_print module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestObject.test_isinstance _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58592020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_isinstance'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_isinstance'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_isinstance'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_isinstance'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_isinstance'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_isinstance'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_isinstance'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f9f3a8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...isinstance'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab5a060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab5a060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...isinstance'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_isinstance'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_isinstance'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_isinstance'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_isinstance at 0x00007fdd6a5a4bd8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd69726800>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69726838> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 165, in <module> E test_isinstance() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_isinstance E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_isinstance(): module = self.import_extension('foo', [ ("ismapping", "METH_O", """ PyObject* collections_mod = PyImport_ImportModule("collections.abc"); if (collections_mod == NULL) { return NULL; } PyObject* mapping_t = PyObject_GetAttrString( collections_mod, "Mapping"); Py_DECREF(collections_mod); if (mapping_t == NULL) { return NULL; } if (PyObject_IsInstance(args, mapping_t)) { Py_DECREF(mapping_t); Py_RETURN_TRUE; } else { Py_DECREF(mapping_t); Py_RETURN_FALSE; } """), ("is_function", "METH_O", """ if (PyObject_IsInstance(args, (PyObject *)&PyFunction_Type)) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE; } """),]) import collections.abc assert isinstance(dict(), collections.abc.Mapping) assert module.ismapping(dict()) def f(): pass assert not module.is_function(1) assert module.is_function(f) try: test_isinstance() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 165, in <module> test_isinstance() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_isinstance module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestObject.test_format_returns_unicode ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_format_returns_unicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_format_returns_unicode'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_format_returns_unicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_format_returns_unicode'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_format_returns_unicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_format_returns_unicode'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_format_returns_unicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58ce4ac0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ns_unicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0f8160> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0f8160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ns_unicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_format_returns_unicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_format_returns_unicode'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_format_returns_unicode'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_format_returns_unicode at 0x00007fdd6a5a4c50> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd6a974138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a974170> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> E test_format_returns_unicode() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_format_returns_unicode E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_format_returns_unicode(): module = self.import_extension('foo', [ ("empty_format", "METH_O", """ PyObject* empty_unicode = PyUnicode_FromStringAndSize("", 0); PyObject* obj = PyObject_Format(args, empty_unicode); return obj; """)]) a = module.empty_format('hello') assert isinstance(a, str) a = module.empty_format(type('hello')) assert isinstance(a, str) try: test_format_returns_unicode() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> test_format_returns_unicode() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_format_returns_unicode module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________________ AppTestObject.test_Bytes ___________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Bytes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Bytes'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Bytes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Bytes'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Bytes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Bytes'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Bytes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd5130aac0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_Bytes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd512e8060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd512e8060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_Bytes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Bytes'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_Bytes'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_Bytes'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_Bytes at 0x00007fdd6a5a4cc8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd69b7a4b8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69b7a4f0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_Bytes() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in test_Bytes E module = self.import_extension('test_Bytes', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_Bytes(): class sub1(bytes): pass class sub2(bytes): def __bytes__(self): return self module = self.import_extension('test_Bytes', [ ('asbytes', 'METH_O', """ return PyObject_Bytes(args); """)]) assert type(module.asbytes(sub1(b''))) is bytes assert type(module.asbytes(sub2(b''))) is sub2 assert module.asbytes(list(b"a")) == b"a" try: test_Bytes() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_Bytes() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 132, in test_Bytes module = self.import_extension('test_Bytes', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestObject.test_LengthHint _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_LengthHint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_LengthHint'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_LengthHint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_LengthHint'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_LengthHint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_LengthHint'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_LengthHint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac28408> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...LengthHint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aec82e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aec82e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...LengthHint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_LengthHint'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_LengthHint'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_LengthHint'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_LengthHint at 0x00007fdd6a5a4d40> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd51676640>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd51676720> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> E test_LengthHint() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in test_LengthHint E module = self.import_extension('test_LengthHint', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_LengthHint(): import operator class WithLen: def __len__(self): return 1 def __length_hint__(self): return 42 class NoLen: def __length_hint__(self): return 2 module = self.import_extension('test_LengthHint', [ ('length_hint', 'METH_VARARGS', """ PyObject *obj = PyTuple_GET_ITEM(args, 0); Py_ssize_t i = PyLong_AsSsize_t(PyTuple_GET_ITEM(args, 1)); return PyLong_FromSsize_t(PyObject_LengthHint(obj, i)); """)]) assert module.length_hint(WithLen(), 5) == operator.length_hint(WithLen(), 5) == 1 assert module.length_hint(NoLen(), 5) == operator.length_hint(NoLen(), 5) == 2 assert module.length_hint(object(), 5) == operator.length_hint(object(), 5) == 5 try: test_LengthHint() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> test_LengthHint() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in test_LengthHint module = self.import_extension('test_LengthHint', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestObject.test_repr_enter_leave ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07cae8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_repr_enter_leave'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_repr_enter_leave'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_repr_enter_leave'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_repr_enter_leave'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_repr_enter_leave'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_repr_enter_leave'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_repr_enter_leave'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd505dc4d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...nter_leave'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab9e060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab9e060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...nter_leave'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_repr_enter_leave'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_repr_enter_leave'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_repr_enter_leave'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_repr_enter_leave at 0x00007fdd6a5a4e30> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd5882ade8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5882ae20> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 166, in <module> E test_repr_enter_leave() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_repr_enter_leave E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_repr_enter_leave(): module = self.import_extension('foo', [ ("enter", "METH_O", """ return PyLong_FromLong(Py_ReprEnter(args)); """), ("leave", "METH_O", """ Py_ReprLeave(args); Py_INCREF(Py_None); return Py_None; """)]) obj1 = [42] obj2 = [42] # another list n = module.enter(obj1) assert n == 0 module.leave(obj1) n = module.enter(obj1) assert n == 0 n = module.enter(obj1) assert n == 1 n = module.enter(obj1) assert n == 1 module.leave(obj1) n = module.enter(obj1) assert n == 0 n = module.enter(obj2) assert n == 0 n = module.enter(obj1) assert n == 1 n = module.enter(obj2) assert n == 1 module.leave(obj1) n = module.enter(obj2) assert n == 1 module.leave(obj2) try: test_repr_enter_leave() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 166, in <module> test_repr_enter_leave() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_repr_enter_leave module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestObject.test_GenericGetSetDict _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58592020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_GenericGetSetDict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_GenericGetSetDict'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_GenericGetSetDict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_GenericGetSetDict'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_GenericGetSetDict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_GenericGetSetDict'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_GenericGetSetDict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f9fa38> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...GetSetDict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0da020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0da020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...GetSetDict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_GenericGetSetDict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_GenericGetSetDict'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_GenericGetSetDict'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_GenericGetSetDict at 0x00007fdd6a5a4ea8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd79c8dd38>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79c8df30> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> E test_GenericGetSetDict() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_GenericGetSetDict E module = self.import_extension('test_GenericGetSetDict', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_GenericGetSetDict(): module = self.import_extension('test_GenericGetSetDict', [ ('test1', 'METH_VARARGS', """ PyObject *obj = PyTuple_GET_ITEM(args, 0); PyObject *newdict = PyTuple_GET_ITEM(args, 1); PyObject *olddict = PyObject_GenericGetDict(obj, NULL); if (olddict == NULL) return NULL; int res = PyObject_GenericSetDict(obj, newdict, NULL); if (res != 0) return NULL; return olddict; """)]) class A: pass a = A() a.x = 42 nd = {'y': 43} d = module.test1(a, nd) assert d == {'x': 42} assert a.y == 43 assert a.__dict__ is nd try: test_GenericGetSetDict() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> test_GenericGetSetDict() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_GenericGetSetDict module = self.import_extension('test_GenericGetSetDict', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________________ AppTestObject.test_Py_Is ___________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_Is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_Is'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_Is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_Is'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_Is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Py_Is'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_Is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac28368> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_Py_Is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab5e1a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab5e1a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_Py_Is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Py_Is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_Py_Is'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_Py_Is'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_Py_Is at 0x00007fdd6a5a4f20> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd7b0e6bf0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b0e7328> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_Py_Is() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_Py_Is E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_Py_Is(): module = self.import_extension('foo', [ ('test_is', 'METH_VARARGS', """ PyObject *obj1 = PyTuple_GET_ITEM(args, 0); PyObject *obj2 = PyTuple_GET_ITEM(args, 1); int res = Py_Is(obj1, obj2); return PyLong_FromLong(res); """)]) nan1 = float('nan') nan2 = float('nan') assert module.test_is(nan1, nan2) a = 1 b = 1 assert module.test_is(a, b) assert not module.test_is(a, nan1) try: test_Py_Is() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_Py_Is() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_Py_Is module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestObject.test_SetAttrNull ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetAttrNull'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetAttrNull'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetAttrNull'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetAttrNull'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetAttrNull'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetAttrNull'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetAttrNull'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd512fc2a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...etAttrNull'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5915f3a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5915f3a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...etAttrNull'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetAttrNull'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_SetAttrNull'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_SetAttrNull'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_SetAttrNull at 0x00007fdd6a5a4f98> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd69334170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd693341a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> E test_SetAttrNull() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_SetAttrNull E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_SetAttrNull(): module = self.import_extension('foo', [ ('set_attr_null', 'METH_VARARGS', """ PyObject *obj = PyTuple_GET_ITEM(args, 0); PyObject *name = PyTuple_GET_ITEM(args, 1); PyObject_SetAttr(obj, name, NULL); Py_RETURN_TRUE; """), ('set_test_null', 'METH_O', """ PyObject_SetAttrString(args, "test", NULL); Py_RETURN_TRUE; """), ]) class A(object): pass a = A() a.test = 20 module.set_attr_null(a, "test") assert not hasattr(a, "test") a.test = 20 module.set_test_null(a) assert not hasattr(a, "test") try: test_SetAttrNull() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> test_SetAttrNull() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_SetAttrNull module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________________ AppTestObject.test_py_is ___________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_py_is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_py_is'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_py_is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_py_is'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_py_is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_py_is'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_py_is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd505dc750> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_py_is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5ca0a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5ca0a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_py_is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_py_is'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_py_is'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_py_is'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_py_is at 0x00007fdd6a5a5010> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTestObject ...estObject.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestObject object at 0x00007fdd7ae68250>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ae68288> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 142, in <module> E test_py_is() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_py_is E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module def _skip_test(*ignored): skip("not for -A testing") type(self).reset_memory_pressure = _skip_test self.runappdirect = True self.tmpname = '/private/tmp/buildbot-x86_64/pytest/pytest-of-matti/pytest-1847/out' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_py_is(): module = self.import_extension('foo', [ ("is_same", "METH_VARARGS", """ PyObject *a, *b; if (!PyArg_ParseTuple(args, "OO", &a, &b)) return NULL; return PyLong_FromLong(Py_Is(a, b)); """), ]) x = object() assert module.is_same(x, x) == 1 assert module.is_same(x, object()) == 0 assert module.is_same(None, None) == 1 assert module.is_same(None, x) == 0 try: test_py_is() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 142, in <module> test_py_is() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_py_is module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________ AppTestPyBufferObject.test_fillWithoutObject _________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithoutObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fillWithoutObject'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithoutObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fillWithoutObject'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithoutObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fillWithoutObject'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithoutObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f9fc18> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...houtObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58d86120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58d86120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...houtObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithoutObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fillWithoutObject'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fillWithoutObject'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fillWithoutObject at 0x00007fdd6a5a4638> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBufferObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestPyBufferObject object at 0x00007fdd79c7ebb8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79c7f018> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 170, in <module> E test_fillWithoutObject() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_fillWithoutObject E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fillWithoutObject(): """ PyBuffer_FillInfo populates the C{buf} and C{length}fields of the Py_buffer passed to it. """ module = self.import_extension('foo', [ ("fillinfo", "METH_NOARGS", """ Py_buffer buf; PyObject *str = PyBytes_FromString("hello, world."); PyObject *result; if (PyBuffer_FillInfo(&buf, NULL, PyBytes_AsString(str), 13, 0, 0)) { return NULL; } /* Check a few things we want to have happened. */ if (buf.buf != PyBytes_AsString(str)) { PyErr_SetString(PyExc_ValueError, "buf field not initialized"); return NULL; } if (buf.len != 13) { PyErr_SetString(PyExc_ValueError, "len field not initialized"); return NULL; } if (buf.obj != NULL) { PyErr_SetString(PyExc_ValueError, "obj field not initialized"); return NULL; } /* Give back a new string to the caller, constructed from data in the * Py_buffer. */ if (!(result = PyBytes_FromStringAndSize(buf.buf, buf.len))) { return NULL; } /* Free that string we allocated above. result does not share storage with * it. */ Py_DECREF(str); return result; """)]) result = module.fillinfo() assert b"hello, world." == result try: test_fillWithoutObject() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 170, in <module> test_fillWithoutObject() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_fillWithoutObject module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestPyBufferObject.test_fillWithObject ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fillWithObject'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fillWithObject'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fillWithObject'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac28a20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...WithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5d2060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a5d2060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...WithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillWithObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fillWithObject'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fillWithObject'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fillWithObject at 0x00007fdd6a5a46b0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBufferObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestPyBufferObject object at 0x00007fdd58e641a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58e64218> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 167, in <module> E test_fillWithObject() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 126, in test_fillWithObject E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fillWithObject(): """ PyBuffer_FillInfo populates the C{buf}, C{length}, and C{obj} fields of the Py_buffer passed to it and increments the reference count of the object. """ module = self.import_extension('foo', [ ("fillinfo", "METH_NOARGS", """ Py_buffer buf; PyObject *str = PyBytes_FromString("hello, world."); PyObject *result; if (PyBuffer_FillInfo(&buf, str, PyBytes_AsString(str), 13, 0, 0)) { return NULL; } /* Get rid of our own reference to the object, but the Py_buffer should * still have a reference. */ Py_DECREF(str); /* Give back a new string to the caller, constructed from data in the * Py_buffer. It better still be valid. */ if (!(result = PyBytes_FromStringAndSize(buf.buf, buf.len))) { return NULL; } /* Now the data in the Py_buffer is really no longer needed, get rid of it *(could use PyBuffer_Release here, but that would drag in more code than * necessary). */ Py_DECREF(buf.obj); /* Py_DECREF can't directly signal error to us, but if it makes a reference * count go negative, it will set an error. */ if (PyErr_Occurred()) { return NULL; } return result; """)]) result = module.fillinfo() assert b"hello, world." == result try: test_fillWithObject() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 167, in <module> test_fillWithObject() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 126, in test_fillWithObject module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestPyBufferObject.test_fillReadonly ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd585923e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillReadonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fillReadonly'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillReadonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fillReadonly'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillReadonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fillReadonly'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillReadonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd512fc458> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...llReadonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a578360> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a578360> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...llReadonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fillReadonly'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fillReadonly'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fillReadonly'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fillReadonly at 0x00007fdd6a5a4728> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBufferObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestPyBufferObject object at 0x00007fdd69338170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd693381e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_fillReadonly() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 124, in test_fillReadonly E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fillReadonly(): """ PyBuffer_FillInfo fails if WRITABLE is passed but object is readonly. """ module = self.import_extension('foo', [ ("fillinfo", "METH_NOARGS", """ Py_buffer buf; PyObject *str = PyBytes_FromString("hello, world."); if (PyBuffer_FillInfo(&buf, str, PyBytes_AsString(str), 13, 1, PyBUF_WRITABLE)) { Py_DECREF(str); return NULL; } Py_DECREF(str); PyBuffer_Release(&buf); Py_RETURN_NONE; """)]) raises((BufferError, ValueError), module.fillinfo) try: test_fillReadonly() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_fillReadonly() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 124, in test_fillReadonly module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestPyBufferObject.test_decrefObject ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_decrefObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_decrefObject'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_decrefObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_decrefObject'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_decrefObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_decrefObject'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_decrefObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d78b60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...crefObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7acbf620> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7acbf620> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...crefObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_decrefObject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_decrefObject'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_decrefObject'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_decrefObject at 0x00007fdd6a5a47a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBufferObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestPyBufferObject object at 0x00007fdd6ac214b0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ac21520> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 146, in <module> E test_decrefObject() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_decrefObject E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_decrefObject(): """ The PyObject referenced by Py_buffer.obj has its reference count decremented by PyBuffer_Release. """ module = self.import_extension('foo', [ ("release", "METH_NOARGS", """ Py_buffer buf; buf.obj = PyBytes_FromString("release me!"); buf.buf = PyBytes_AsString(buf.obj); buf.len = PyBytes_Size(buf.obj); /* The Py_buffer owns the only reference to that string. Release the * Py_buffer and the string should be released as well. */ PyBuffer_Release(&buf); assert(!buf.obj); PyBuffer_Release(&buf); /* call again, should not have any more effect */ PyBuffer_Release(&buf); PyBuffer_Release(&buf); Py_RETURN_NONE; """)]) assert module.release() is None try: test_decrefObject() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 146, in <module> test_decrefObject() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_decrefObject module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestPyBufferObject.test_richcomp_nan ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd585923e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_richcomp_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_richcomp_nan'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_richcomp_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_richcomp_nan'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_richcomp_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_richcomp_nan'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_richcomp_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd509220c0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...chcomp_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd512e81a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd512e81a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...chcomp_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_richcomp_nan'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_richcomp_nan'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_richcomp_nan'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_richcomp_nan at 0x00007fdd6a5a4818> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyBufferObject.w_compile_module of <pypy.module.cpyext.test.test_object.AppTes...t.w_import_extension of <pypy.module.cpyext.test.test_object.AppTestPyBufferObject object at 0x00007fdd509122c0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd50912448> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> E test_richcomp_nan() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_richcomp_nan E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_richcomp_nan(): module = self.import_extension('foo', [ ("comp_eq", "METH_VARARGS", """ PyObject *a = PyTuple_GetItem(args, 0); PyObject *b = PyTuple_GetItem(args, 1); int res = PyObject_RichCompareBool(a, b, Py_EQ); return PyLong_FromLong(res); """),]) a = float('nan') b = float('nan') assert a is b res = module.comp_eq(a, b) assert res == 1 try: test_richcomp_nan() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> test_richcomp_nan() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_richcomp_nan module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________________ AppTestFetch.test_occurred __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_occurred'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_occurred'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_occurred'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_occurred'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_occurred'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_occurred'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_occurred'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac1e340> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_occurred'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab95320> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab95320> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_occurred'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_occurred'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_occurred'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_occurred'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_occurred at 0x00007fdd59188200> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd5056e790>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5056ff30> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> E test_occurred() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_occurred E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_occurred(): module = self.import_extension('foo', [ ("check_error", "METH_NOARGS", ''' PyErr_SetString(PyExc_TypeError, "message"); PyErr_Occurred(); PyErr_Clear(); Py_RETURN_TRUE; ''' ), ]) assert module.check_error() try: test_occurred() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> test_occurred() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_occurred module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestFetch.test_fetch_and_restore ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fetch_and_restore'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fetch_and_restore'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fetch_and_restore'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fetch_and_restore'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fetch_and_restore'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fetch_and_restore'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fetch_and_restore'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50ffa138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...nd_restore'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aea4020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aea4020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...nd_restore'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fetch_and_restore'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fetch_and_restore'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fetch_and_restore'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fetch_and_restore at 0x00007fdd59188278> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd69338138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd693381e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> E test_fetch_and_restore() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_fetch_and_restore E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fetch_and_restore(): module = self.import_extension('foo', [ ("check_error", "METH_NOARGS", ''' PyObject *type, *val, *tb; PyErr_SetString(PyExc_TypeError, "message"); PyErr_Fetch(&type, &val, &tb); if (PyErr_Occurred()) return NULL; if (type != PyExc_TypeError) Py_RETURN_FALSE; PyErr_Restore(type, val, tb); if (!PyErr_Occurred()) Py_RETURN_FALSE; PyErr_Clear(); Py_RETURN_TRUE; ''' ), ]) assert module.check_error() try: test_fetch_and_restore() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 144, in <module> test_fetch_and_restore() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_fetch_and_restore module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestFetch.test_get_raised_exception ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_raised_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_raised_exception'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_raised_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_raised_exception'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_raised_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_get_raised_exception'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_raised_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6acea4d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5080f320> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5080f320> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_get_raised_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_get_raised_exception'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_get_raised_exception'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_get_raised_exception at 0x00007fdd591882f0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd6a4a4288>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a4a4368> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 153, in <module> E test_get_raised_exception() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_get_raised_exception E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_get_raised_exception(): module = self.import_extension('foo', [ ("get_raised", "METH_NOARGS", ''' PyObject *exc; PyErr_SetString(PyExc_TypeError, "message"); exc = PyErr_GetRaisedException(); if (PyErr_Occurred()) { Py_XDECREF(exc); PyErr_SetString(PyExc_AssertionError, "indicator not cleared"); return NULL; } return exc; ''' ), ("get_none", "METH_NOARGS", ''' PyObject *exc = PyErr_GetRaisedException(); if (exc != NULL) { Py_DECREF(exc); Py_RETURN_FALSE; } Py_RETURN_TRUE; ''' ), ]) exc = module.get_raised() assert type(exc) is TypeError assert exc.args == ("message",) assert module.get_none() is True try: test_get_raised_exception() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 153, in <module> test_get_raised_exception() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_get_raised_exception module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestFetch.test_set_raised_exception ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd585923e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_raised_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_set_raised_exception'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_raised_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_set_raised_exception'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_raised_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_set_raised_exception'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_raised_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f9fc18> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ab666e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7ab666e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_raised_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_set_raised_exception'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_set_raised_exception'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_set_raised_exception at 0x00007fdd59188368> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd58ab8138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58ab8170> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> E test_set_raised_exception() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_set_raised_exception E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_set_raised_exception(): module = self.import_extension('foo', [ ("roundtrip", "METH_NOARGS", ''' PyObject *exc; PyErr_SetString(PyExc_TypeError, "message"); exc = PyErr_GetRaisedException(); if (PyErr_Occurred()) { Py_XDECREF(exc); PyErr_SetString(PyExc_AssertionError, "indicator not cleared"); return NULL; } /* set-and-steal: gives ownership of exc back to the indicator */ PyErr_SetRaisedException(exc); if (!PyErr_Occurred()) { PyErr_SetString(PyExc_AssertionError, "indicator not set"); return NULL; } return NULL; ''' ), ]) with raises(TypeError) as excinfo: module.roundtrip() assert excinfo.value.args == ("message",) try: test_set_raised_exception() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> test_set_raised_exception() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_set_raised_exception module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestFetch.test_normalize __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_normalize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_normalize'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_normalize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_normalize'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_normalize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_normalize'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_normalize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac1e2f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._normalize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0f81a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b0f81a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._normalize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_normalize'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_normalize'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_normalize'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_normalize at 0x00007fdd591883e0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd595d63a0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd595d63d8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 156, in <module> E test_normalize() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_normalize E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_normalize(): module = self.import_extension('foo', [ ("check_error", "METH_NOARGS", ''' PyObject *type, *val, *tb; PyErr_SetString(PyExc_TypeError, "message"); PyErr_Fetch(&type, &val, &tb); if (type != PyExc_TypeError) Py_RETURN_FALSE; if (!PyUnicode_Check(val)) Py_RETURN_FALSE; /* Normalize */ PyErr_NormalizeException(&type, &val, &tb); if (type != PyExc_TypeError) Py_RETURN_FALSE; if ((PyObject*)Py_TYPE(val) != PyExc_TypeError) Py_RETURN_FALSE; /* Normalize again */ PyErr_NormalizeException(&type, &val, &tb); if (type != PyExc_TypeError) Py_RETURN_FALSE; if ((PyObject*)Py_TYPE(val) != PyExc_TypeError) Py_RETURN_FALSE; PyErr_Restore(type, val, tb); PyErr_Clear(); Py_RETURN_TRUE; ''' ), ]) assert module.check_error() try: test_normalize() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 156, in <module> test_normalize() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_normalize module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestFetch.test_normalize_no_exception ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_normalize_no_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_normalize_no_exception'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_normalize_no_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_normalize_no_exception'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_normalize_no_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_normalize_no_exception'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_normalize_no_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50ffa278> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58bf4020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58bf4020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_normalize_no_exception'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_normalize_no_exception'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_normalize_no_exception'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_normalize_no_exception at 0x00007fdd59188458> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd512b61a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd512b61e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> E test_normalize_no_exception() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_normalize_no_exception E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_normalize_no_exception(): module = self.import_extension('foo', [ ("check_error", "METH_NOARGS", ''' PyObject *type, *val, *tb; PyErr_Fetch(&type, &val, &tb); if (type != NULL) Py_RETURN_FALSE; if (val != NULL) Py_RETURN_FALSE; PyErr_NormalizeException(&type, &val, &tb); Py_RETURN_TRUE; ''' ), ]) assert module.check_error() try: test_normalize_no_exception() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> test_normalize_no_exception() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_normalize_no_exception module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestFetch.test_SetFromErrno ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrno'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrno'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrno'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrno'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrno'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrno'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrno'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6acea4d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tFromErrno'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505ee3a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd505ee3a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tFromErrno'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrno'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_SetFromErrno'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_SetFromErrno'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_SetFromErrno at 0x00007fdd591884d0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd6a4a4448>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a4a4480> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> E test_SetFromErrno() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in test_SetFromErrno E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_SetFromErrno(): import sys if not self.runappdirect: skip("callbacks through ll2ctypes modify errno") import errno, os module = self.import_extension('foo', [ ("set_from_errno", "METH_NOARGS", ''' errno = EBADF; PyErr_SetFromErrno(PyExc_OSError); return NULL; '''), ], prologue="#include <errno.h>") try: module.set_from_errno() except OSError as e: print(e.errno, errno.EBADF) assert e.errno == errno.EBADF assert e.strerror == os.strerror(errno.EBADF) assert e.filename is None try: test_SetFromErrno() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 145, in <module> test_SetFromErrno() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 128, in test_SetFromErrno module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________ AppTestFetch.test_SetFromErrnoWithFilename_basic _______________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd585923e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilename_basic'...all__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilename_basic'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilename_basic'...all__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilename_basic'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilename_basic'...all__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilename_basic'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilename_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58f94a48> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...name_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58bd4020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58bd4020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...name_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilename_basic'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_SetFromErrnoWithFilename_basic'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_SetFromErrnoWithFilename_basic'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_SetFromErrnoWithFilename_basic at 0x00007fdd59188548> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd7a9fe218>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7a9fe250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 224, in <module> E test_SetFromErrnoWithFilename_basic() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 177, in test_SetFromErrnoWithFilename_basic E module = self.import_extension('foo', codestr, E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_SetFromErrnoWithFilename_basic(): char = self.special_char if char is None: char = "a" # boring import errno, os, sys codestr = [ ("set_from_errno", "METH_NOARGS", ''' errno = EBADF; PyErr_SetFromErrnoWithFilename(PyExc_OSError, "/path/to/file"); return NULL; '''), ("set_from_errno_special", "METH_NOARGS", ''' errno = EBADF; PyErr_SetFromErrnoWithFilename(PyExc_OSError, "/path/to/%s"); return NULL; ''' % (char, )), ] if sys.platform == "win32": codestr += [ ("set_from_windowserr", "METH_NOARGS", """ /* this error code has no message, Python formats it as hexadecimal */ int code = 376526934; PyObject *ret = PyErr_SetFromWindowsErr(code); return NULL; """), ("set_from_windowserr_filename", "METH_O", """ int code = 376526934; char *filename = NULL; if (args != Py_None) filename = PyBytes_AsString(args); PyObject *ret = PyErr_SetFromWindowsErrWithFilename(code, filename); return NULL; """), ("set_from_windowserr_filename_object", "METH_O", """ int code = 376526934; PyObject *ret = PyErr_SetExcFromWindowsErrWithFilenameObject(PyExc_OSError, code, args); return NULL; """), ("set_from_windowserr_filename_objects", "METH_VARARGS", """ int code = 376526934; PyObject *arg1, *arg2; if (!PyArg_ParseTuple(args, "OO", &arg1, &arg2)) { return NULL; } PyObject *ret = PyErr_SetExcFromWindowsErrWithFilenameObjects(PyExc_OSError, code, arg1, arg2); return NULL; """), ] module = self.import_extension('foo', codestr, prologue="#include <errno.h>") exc_info = raises(OSError, module.set_from_errno) assert exc_info.value.filename == "/path/to/file" if self.runappdirect: # untranslated the errno can get reset by the calls to ll2ctypes assert exc_info.value.errno == errno.EBADF assert exc_info.value.strerror == os.strerror(errno.EBADF) exc_info = raises(OSError, module.set_from_errno_special) assert exc_info.value.filename == "/path/to/%s" % (char, ) if self.runappdirect: # untranslated the errno can get reset by the calls to ll2ctypes assert exc_info.value.errno == errno.EBADF assert exc_info.value.strerror == os.strerror(errno.EBADF) if sys.platform == "win32": exc_info = raises(OSError, module.set_from_windowserr) if self.runappdirect: # untranslated the errno can get reset by the calls to ll2ctypes assert exc_info.value.errno == 376526934 exc_info = raises(OSError, module.set_from_windowserr_filename, None) if self.runappdirect: assert exc_info.value.errno == 376526934 exc_info = raises(OSError, module.set_from_windowserr_filename, b"myfile.py") if self.runappdirect: assert exc_info.value.errno == 376526934 assert exc_info.value.filename == "myfile.py" exc_info = raises(OSError, module.set_from_windowserr_filename_object, "myfile.py") print(exc_info.value.filename) if self.runappdirect: assert exc_info.value.errno == 376526934 assert exc_info.value.filename == "myfile.py" exc_info = raises(OSError, module.set_from_windowserr_filename_objects, "myfile.py", "myfile2.py") print(exc_info.value, exc_info.value.filename) if self.runappdirect: assert exc_info.value.errno == 376526934 assert exc_info.value.filename == "myfile.py" assert exc_info.value.filename2== "myfile2.py" try: test_SetFromErrnoWithFilename_basic() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 224, in <module> test_SetFromErrnoWithFilename_basic() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 177, in test_SetFromErrnoWithFilename_basic module = self.import_extension('foo', codestr, ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________ AppTestFetch.test_SetFromErrnoWithFilename_NULL ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59242020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilename_NULL'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilename_NULL'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilename_NULL'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilename_NULL'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilename_NULL'>...call__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilename_NULL'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilename_NULL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac1e2f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ename_NULL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd592ac020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd592ac020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ename_NULL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilename_NULL'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_SetFromErrnoWithFilename_NULL'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_SetFromErrnoWithFilename_NULL'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_SetFromErrnoWithFilename_NULL at 0x00007fdd591885c0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd595d2678>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd595d26b0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_SetFromErrnoWithFilename_NULL() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_SetFromErrnoWithFilename_NULL E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_SetFromErrnoWithFilename_NULL(): import errno, os module = self.import_extension('foo', [ ("set_from_errno", "METH_NOARGS", ''' errno = EBADF; PyErr_SetFromErrnoWithFilename(PyExc_OSError, NULL); return NULL; '''), ], prologue="#include <errno.h>") exc_info = raises(OSError, module.set_from_errno) assert exc_info.value.filename is None if self.runappdirect: # untranslated the errno can get reset by the calls to ll2ctypes assert exc_info.value.errno == errno.EBADF assert exc_info.value.strerror == os.strerror(errno.EBADF) try: test_SetFromErrnoWithFilename_NULL() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_SetFromErrnoWithFilename_NULL() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_SetFromErrnoWithFilename_NULL module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________ AppTestFetch.test_SetFromErrnoWithFilenameObject__PyUnicode __________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_...ultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyUnicode'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_...ultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyUnicode'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_...ultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyUnicode'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyUnicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51334098> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._PyUnicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5924a060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5924a060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._PyUnicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyUnicode'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyUnicode'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyUnicode'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_SetFromErrnoWithFilenameObject__PyUnicode at 0x00007fdd59188638> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd69c96138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69c96170> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 155, in <module> E test_SetFromErrnoWithFilenameObject__PyUnicode() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_SetFromErrnoWithFilenameObject__PyUnicode E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_SetFromErrnoWithFilenameObject__PyUnicode(): import errno, os module = self.import_extension('foo', [ ("set_from_errno", "METH_NOARGS", ''' PyObject *filenameObject = PyUnicode_FromString("/path/to/file"); errno = EBADF; PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, filenameObject); Py_DECREF(filenameObject); return NULL; '''), ("set_from_errno2", "METH_NOARGS", ''' PyObject *filenameObject = PyUnicode_FromString("/path/to/file"); errno = EBADF; PyErr_SetFromErrnoWithFilenameObjects(PyExc_OSError, filenameObject, filenameObject); Py_DECREF(filenameObject); return NULL; '''), ], prologue="#include <errno.h>") exc_info = raises(OSError, module.set_from_errno) assert exc_info.value.filename == "/path/to/file" exc_info = raises(OSError, module.set_from_errno2) assert exc_info.value.filename == "/path/to/file" assert exc_info.value.filename2 == "/path/to/file" if self.runappdirect: # untranslated the errno can get reset by the calls to ll2ctypes assert exc_info.value.errno == errno.EBADF assert exc_info.value.strerror == os.strerror(errno.EBADF) try: test_SetFromErrnoWithFilenameObject__PyUnicode() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 155, in <module> test_SetFromErrnoWithFilenameObject__PyUnicode() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_SetFromErrnoWithFilenameObject__PyUnicode module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________ AppTestFetch.test_SetFromErrnoWithFilenameObject__PyLong ___________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59242020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_...<_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyLong'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_...<_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyLong'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_...<_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyLong'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyLong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac101b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ct__PyLong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5924a020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5924a020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ct__PyLong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyLong'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyLong'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyLong'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_SetFromErrnoWithFilenameObject__PyLong at 0x00007fdd591886b0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd7b206c28>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b206c60> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_SetFromErrnoWithFilenameObject__PyLong() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_SetFromErrnoWithFilenameObject__PyLong E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_SetFromErrnoWithFilenameObject__PyLong(): import errno, os module = self.import_extension('foo', [ ("set_from_errno", "METH_NOARGS", ''' PyObject *intObject = PyLong_FromLong(3); errno = EBADF; PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, intObject); Py_DECREF(intObject); return NULL; '''), ], prologue="#include <errno.h>") exc_info = raises(OSError, module.set_from_errno) assert exc_info.value.filename == 3 if self.runappdirect: # untranslated the errno can get reset by the calls to ll2ctypes assert exc_info.value.errno == errno.EBADF assert exc_info.value.strerror == os.strerror(errno.EBADF) try: test_SetFromErrnoWithFilenameObject__PyLong() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_SetFromErrnoWithFilenameObject__PyLong() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_SetFromErrnoWithFilenameObject__PyLong module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________ AppTestFetch.test_SetFromErrnoWithFilenameObject__PyList ___________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_...<_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyList'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_...<_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyList'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_...<_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyList'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyList'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50ffa3b8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ct__PyList'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd592a20a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd592a20a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ct__PyList'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyList'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyList'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyList'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_SetFromErrnoWithFilenameObject__PyList at 0x00007fdd59188728> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd58b0c800>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58b0c838> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_SetFromErrnoWithFilenameObject__PyList() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_SetFromErrnoWithFilenameObject__PyList E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_SetFromErrnoWithFilenameObject__PyList(): import errno, os module = self.import_extension('foo', [ ("set_from_errno", "METH_NOARGS", ''' PyObject *lst = Py_BuildValue("[iis]", 1, 2, "three"); errno = EBADF; PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, lst); Py_DECREF(lst); return NULL; '''), ], prologue="#include <errno.h>") exc_info = raises(OSError, module.set_from_errno) assert exc_info.value.filename == [1, 2, "three"] if self.runappdirect: # untranslated the errno can get reset by the calls to ll2ctypes assert exc_info.value.errno == errno.EBADF assert exc_info.value.strerror == os.strerror(errno.EBADF) try: test_SetFromErrnoWithFilenameObject__PyList() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_SetFromErrnoWithFilenameObject__PyList() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_SetFromErrnoWithFilenameObject__PyList module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________ AppTestFetch.test_SetFromErrnoWithFilenameObject__PyTuple ___________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59242020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_..._MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyTuple'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_..._MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyTuple'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_..._MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyTuple'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyTuple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac28ca0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t__PyTuple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab9a020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab9a020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t__PyTuple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyTuple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyTuple'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_SetFromErrnoWithFilenameObject__PyTuple'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_SetFromErrnoWithFilenameObject__PyTuple at 0x00007fdd591887a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd6ad74678>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6ad74758> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_SetFromErrnoWithFilenameObject__PyTuple() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_SetFromErrnoWithFilenameObject__PyTuple E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_SetFromErrnoWithFilenameObject__PyTuple(): import errno, os module = self.import_extension('foo', [ ("set_from_errno", "METH_NOARGS", ''' PyObject *tuple = Py_BuildValue("(iis)", 1, 2, "three"); errno = EBADF; PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, tuple); Py_DECREF(tuple); return NULL; '''), ], prologue="#include <errno.h>") exc_info = raises(OSError, module.set_from_errno) assert exc_info.value.filename == (1, 2, "three") if self.runappdirect: # untranslated the errno can get reset by the calls to ll2ctypes assert exc_info.value.errno == errno.EBADF assert exc_info.value.strerror == os.strerror(errno.EBADF) try: test_SetFromErrnoWithFilenameObject__PyTuple() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_SetFromErrnoWithFilenameObject__PyTuple() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_SetFromErrnoWithFilenameObject__PyTuple module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________ AppTestFetch.test_SetFromErrnoWithFilenameObject__Py_None ___________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_..._MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__Py_None'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_..._MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__Py_None'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject_..._MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__Py_None'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__Py_None'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd513352e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t__Py_None'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aeba020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aeba020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t__Py_None'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_SetFromErrnoWithFilenameObject__Py_None'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_SetFromErrnoWithFilenameObject__Py_None'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_SetFromErrnoWithFilenameObject__Py_None'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_SetFromErrnoWithFilenameObject__Py_None at 0x00007fdd59188818> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd69702138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69702170> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_SetFromErrnoWithFilenameObject__Py_None() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_SetFromErrnoWithFilenameObject__Py_None E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_SetFromErrnoWithFilenameObject__Py_None(): import errno, os module = self.import_extension('foo', [ ("set_from_errno", "METH_NOARGS", ''' PyObject *none = Py_BuildValue(""); errno = EBADF; PyErr_SetFromErrnoWithFilenameObject(PyExc_OSError, none); Py_DECREF(none); return NULL; '''), ], prologue="#include <errno.h>") exc_info = raises(OSError, module.set_from_errno) assert exc_info.value.filename is None if self.runappdirect: # untranslated the errno can get reset by the calls to ll2ctypes assert exc_info.value.errno == errno.EBADF assert exc_info.value.strerror == os.strerror(errno.EBADF) try: test_SetFromErrnoWithFilenameObject__Py_None() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_SetFromErrnoWithFilenameObject__Py_None() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_SetFromErrnoWithFilenameObject__Py_None module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestFetch.test_PyErr_Display ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_Display'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyErr_Display'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_Display'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyErr_Display'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_Display'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyErr_Display'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_Display'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac10548> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...rr_Display'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58c44020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58c44020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...rr_Display'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_Display'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_PyErr_Display'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_PyErr_Display'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_PyErr_Display at 0x00007fdd59188890> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd594c2678>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd594c26b0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> E test_PyErr_Display() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 124, in test_PyErr_Display E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_PyErr_Display(): from sys import version_info module = self.import_extension('foo', [ ("display_error", "METH_VARARGS", r''' PyObject *type, *val, *tb; PyErr_GetExcInfo(&type, &val, &tb); PyErr_Display(type, val, tb); Py_XDECREF(type); Py_XDECREF(val); Py_XDECREF(tb); Py_RETURN_NONE; '''), ]) import io, sys sys.stderr = io.StringIO() try: 1 / 0 except ZeroDivisionError: module.display_error() finally: output = sys.stderr.getvalue() sys.stderr = sys.__stderr__ assert "in test_PyErr_Display\n" in output assert "ZeroDivisionError" in output try: test_PyErr_Display() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> test_PyErr_Display() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 124, in test_PyErr_Display module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestFetch.test_PyErr_Format ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd585923e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_Format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyErr_Format'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_Format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyErr_Format'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_Format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyErr_Format'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_Format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50ffa548> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...Err_Format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab5a0a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab5a0a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...Err_Format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_Format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_PyErr_Format'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_PyErr_Format'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_PyErr_Format at 0x00007fdd59188980> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd58b0c988>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58b0ca68> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> E test_PyErr_Format() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_PyErr_Format E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_PyErr_Format(): import warnings module = self.import_extension('foo', [ ("test_warning", "METH_NOARGS", ''' PyErr_WarnFormat(PyExc_UserWarning, 1, "foo %d bar", 42); Py_RETURN_NONE; '''), ("test_err", "METH_NOARGS", ''' return helper(PyExc_ValueError, "foo %d bar %d", 42, 11); ''')], prologue=""" PyObject * helper(PyObject *exception, char * fmt, ...); PyObject * helper(PyObject *exception, char * fmt, ...) { va_list va; va_start(va, fmt); PyErr_FormatV(exception, fmt, va); va_end(va); return NULL; } """ ) with warnings.catch_warnings(record=True) as l: module.test_warning() assert len(l) == 1 assert "foo 42 bar" in str(l[0]) raises (ValueError, module.test_err) try: test_PyErr_Format() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 152, in <module> test_PyErr_Format() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_PyErr_Format module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestFetch.test_StopIteration_value _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59242020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_StopIteration_value'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_StopIteration_value'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_StopIteration_value'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_StopIteration_value'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_StopIteration_value'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_StopIteration_value'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_StopIteration_value'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac28ed0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tion_value'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab5a1e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab5a1e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...tion_value'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_StopIteration_value'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_StopIteration_value'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_StopIteration_value'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_StopIteration_value at 0x00007fdd591889f8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd6a5bc218>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a5bc250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> E test_StopIteration_value() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_StopIteration_value E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_StopIteration_value(): module = self.import_extension('foo', [ ("test", "METH_O", ''' PyObject *o = ((PyStopIterationObject *)args)->value; Py_INCREF(o); return o; '''), ]) res = module.test(StopIteration("foo!")) assert res == "foo!" try: test_StopIteration_value() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> test_StopIteration_value() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_StopIteration_value module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestFetch.test_PyErr_BadInternalCall ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_BadInternalCall'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyErr_BadInternalCall'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_BadInternalCall'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyErr_BadInternalCall'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_BadInternalCall'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_PyErr_BadInternalCall'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_BadInternalCall'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50fe2250> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ternalCall'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a18e1e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a18e1e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ternalCall'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_PyErr_BadInternalCall'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_PyErr_BadInternalCall'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_PyErr_BadInternalCall'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_PyErr_BadInternalCall at 0x00007fdd59188a70> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd69186170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd691861a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> E test_PyErr_BadInternalCall() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_PyErr_BadInternalCall E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_PyErr_BadInternalCall(): # NB. it only seemed to fail when run with '-s'... but I think # that it always printed stuff to stderr module = self.import_extension('foo', [ ("oops", "METH_NOARGS", r''' PyErr_BadInternalCall(); return NULL; '''), ]) raises(SystemError, module.oops) try: test_PyErr_BadInternalCall() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> test_PyErr_BadInternalCall() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_PyErr_BadInternalCall module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestFetch.test_error_thread_race ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59242020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_error_thread_race'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_error_thread_race'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_error_thread_race'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_error_thread_race'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_error_thread_race'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_error_thread_race'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_error_thread_race'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b27cfe8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...hread_race'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58c20b20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58c20b20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...hread_race'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_error_thread_race'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_error_thread_race'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_error_thread_race'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_error_thread_race at 0x00007fdd59188ae8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd5137b168>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5137b1a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 180, in <module> E test_error_thread_race() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_error_thread_race E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_error_thread_race(): # Check race condition: thread 0 returns from cpyext with error set, # after thread 1 has set an error but before it returns. module = self.import_extension('foo', [ ("emit_error", "METH_VARARGS", ''' PyThreadState *save = NULL; PyGILState_STATE gilsave; /* NB. synchronization due to GIL */ static volatile int flag = 0; int id; if (!PyArg_ParseTuple(args, "i", &id)) return NULL; /* Proceed in thread 1 first */ save = PyEval_SaveThread(); if (save == NULL) abort(); while (id == 0 && flag == 0); gilsave = PyGILState_Ensure(); if (gilsave != PyGILState_UNLOCKED) abort(); PyErr_Format(PyExc_ValueError, "%d", id); /* Proceed in thread 0 first */ if (id == 1) flag = 1; PyGILState_Release(gilsave); while (id == 1 && flag == 1); PyEval_RestoreThread(save); if (id == 0) flag = 0; return NULL; ''' ), ]) import threading failures = [] def worker(arg): try: module.emit_error(arg) failures.append(True) except Exception as exc: if str(exc) != str(arg): failures.append(exc) threads = [threading.Thread(target=worker, args=(j,)) for j in (0, 1)] for t in threads: t.start() for t in threads: t.join() assert not failures try: test_error_thread_race() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 180, in <module> test_error_thread_race() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_error_thread_race module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________________ AppTestFetch.test_format ___________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_format'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_format'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_format'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50ffa660> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50546020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50546020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_format'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_format'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_format'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_format at 0x00007fdd59188b60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd69520330>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69520368> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> E test_format() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_format E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_format(): module = self.import_extension('foo', [ ("raises", "METH_NOARGS", ''' PyErr_Format(PyExc_IndexError, "v1 %ld is out of bounds " "for v2 %d with v3 %ld", 4, 0, 4); return NULL; '''), ]) raises(IndexError, module.raises) try: test_format() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> test_format() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_format module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestFetch.test_WriteUnraisable _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_WriteUnraisable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_WriteUnraisable'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_WriteUnraisable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_WriteUnraisable'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_WriteUnraisable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_WriteUnraisable'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_WriteUnraisable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac29100> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...Unraisable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd506030e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd506030e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...Unraisable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_WriteUnraisable'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_WriteUnraisable'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_WriteUnraisable'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_WriteUnraisable at 0x00007fdd59188bd8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd7b03a138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b03a170> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 188, in <module> E test_WriteUnraisable() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_WriteUnraisable E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_WriteUnraisable(): # Use work-around since cpyext does not set the app-level exc_info # until exiting the c-extenstion module function module = self.import_extension('foo', [ ("unraisable", "METH_O", ''' PyErr_SetString(PyExc_ValueError, "message"); /* args is "location" */ PyErr_WriteUnraisable(args); PyErr_Clear(); Py_RETURN_NONE; '''), ("unraisable_exc", "METH_VARARGS", ''' PyObject *exc, *err_msg, *obj; if (!PyArg_ParseTuple(args, "OOO", &exc, &err_msg, &obj)) { return NULL; } const char *err_msg_utf8; if (err_msg != Py_None) { err_msg_utf8 = PyUnicode_AsUTF8(err_msg); if (err_msg_utf8 == NULL) { return NULL; } } else { err_msg_utf8 = NULL; } PyErr_SetObject((PyObject *)Py_TYPE(exc), exc); _PyErr_WriteUnraisableMsg(err_msg_utf8, obj); Py_RETURN_NONE; '''), ]) import sys import io, sys old = sys.stderr sys.stderr = io.StringIO() module.unraisable('location') output = sys.stderr.getvalue() sys.stderr = old msg = output.strip().replace('\r', '').splitlines() assert msg[0] == "Exception ignored in: 'location'" assert msg[-1] == "ValueError: message" # Taken from lib-python/3/test/audit-tests.py def unraisablehook(hookargs): pass def hook(event, args): if event == "sys.unraisablehook": if args[0] != unraisablehook: raise ValueError("Expected {} == {}".format(args[0], unraisablehook)) print(event, repr(args[1].exc_value), args[1].err_msg) old = sys.stdout sys.stdout = io.StringIO() sys.addaudithook(hook) sys.unraisablehook = unraisablehook module.unraisable_exc(RuntimeError("nonfatal-error"), "sometext", None) output = sys.stdout.getvalue() sys.stdout = old msg = output.strip().replace('\r', '').splitlines() assert msg[0] == "sys.unraisablehook RuntimeError('nonfatal-error') Exception ignored sometext" try: test_WriteUnraisable() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 188, in <module> test_WriteUnraisable() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 125, in test_WriteUnraisable module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestFetch.test_fetch_normalized ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd585923e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fetch_normalized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fetch_normalized'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fetch_normalized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fetch_normalized'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fetch_normalized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fetch_normalized'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fetch_normalized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50fe2250> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...normalized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b21e060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b21e060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...normalized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fetch_normalized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fetch_normalized'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fetch_normalized'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fetch_normalized at 0x00007fdd59188c50> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd699f62f8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd699f6330> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 159, in <module> E test_fetch_normalized() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_fetch_normalized E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fetch_normalized(): module = self.import_extension('foo', [ ("clevel_error", "METH_O", ''' const char *fname = PyUnicode_AsUTF8(args); char buffer[1024]; sprintf(buffer, "open('%s', 'r')", fname); // printf("calling %s\\n", buffer); PyObject *ret = PyRun_String(buffer, Py_eval_input, pyx_d, pyx_d); if (ret) { Py_DECREF(ret); PyErr_SetString(PyExc_AssertionError, "should raise"); return NULL; } PyObject *type, *value, *tb; PyErr_Fetch(&type, &value, &tb); if (type != PyExc_FileNotFoundError) { // printf("type is %s\\n", ((PyTypeObject*)type)->tp_name); return value; } PyErr_Clear(); // decrefs? Py_RETURN_TRUE; '''), ], prologue=""" static PyObject * pyx_d; """, more_init=""" pyx_d = PyModule_GetDict(mod); """) import os fname = 'this file should not exist' assert not os.path.exists(fname) ret = module.clevel_error(fname) print(ret) assert ret is True try: test_fetch_normalized() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 159, in <module> test_fetch_normalized() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 123, in test_fetch_normalized module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________________ AppTestFetch.test_set_get ___________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_set_get'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_set_get'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_set_get'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6acea728> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_set_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b21e460> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b21e460> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_set_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_set_get'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_set_get'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_set_get at 0x00007fdd59188cc8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd58efaaa0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58efab80> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 157, in <module> E test_set_get() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 124, in test_set_get E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_set_get(): # taken from test_capi module = self.import_extension('foo', [ ('set_exception', "METH_O", """ PyObject *exc = PyErr_GetHandledException(); assert(PyExceptionInstance_Check(exc) || exc == NULL); PyErr_SetHandledException(args); return exc; """)]) import sys raised_exception = ValueError("5") new_exc = TypeError("TEST") try: raise raised_exception except ValueError as e: orig_sys_exception = sys.exception() orig_exception = module.set_exception(new_exc) new_sys_exception = sys.exception() new_exception = module.set_exception(orig_exception) reset_sys_exception = sys.exception() assert orig_exception == e assert orig_exception == raised_exception assert orig_sys_exception == orig_exception print(repr(orig_exception), type(reset_sys_exception), repr(reset_sys_exception)) assert reset_sys_exception == orig_exception assert new_exception == new_exc assert new_sys_exception == new_exception else: assert False try: test_set_get() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 157, in <module> test_set_get() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 124, in test_set_get module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________ AppTestFetch.test_exc_set_object_broken_subclasscheck _____________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_exc_set_object_broken_subclassc...': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_exc_set_object_broken_subclasscheck'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_exc_set_object_broken_subclassc...': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_exc_set_object_broken_subclasscheck'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_exc_set_object_broken_subclassc...': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_exc_set_object_broken_subclasscheck'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_exc_set_object_broken_subclasscheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd512fc570> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...classcheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b21e060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b21e060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...classcheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_exc_set_object_broken_subclasscheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_exc_set_object_broken_subclasscheck'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_exc_set_object_broken_subclasscheck'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_exc_set_object_broken_subclasscheck at 0x00007fdd59188d40> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestFetch.w_compile_module of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch ...estFetch.w_import_extension of <pypy.module.cpyext.test.test_pyerrors.AppTestFetch object at 0x00007fdd59002368>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd590023a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_exc_set_object_broken_subclasscheck() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_exc_set_object_broken_subclasscheck E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.special_char = 'a\u0308' self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_exc_set_object_broken_subclasscheck(): # taken from test_capi test_set_object: # PyErr_SetObject triggers normalization which calls issubclass(); # if the exc type's metaclass __subclasscheck__ raises, that # exception should propagate out of the C call. module = self.import_extension('foo', [ ('exc_set_object', "METH_VARARGS", """ PyObject *exc, *obj; if (!PyArg_ParseTuple(args, "OO:exc_set_object", &exc, &obj)) return NULL; PyErr_SetObject(exc, obj); return NULL; """), ]) def broken_subclasscheck(cls, sub): 1/0 Meta = type('Meta', (type,), {'__subclasscheck__': broken_subclasscheck}) Broken = Meta('Broken', (Exception,), {}) raises(ZeroDivisionError, module.exc_set_object, Broken, Broken()) try: test_exc_set_object_broken_subclasscheck() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_exc_set_object_broken_subclasscheck() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 127, in test_exc_set_object_broken_subclasscheck module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestPyMem.test_pymem_alloc _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59242020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pymem_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pymem_alloc'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pymem_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pymem_alloc'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pymem_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_pymem_alloc'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pymem_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b27d2e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ymem_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50528060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50528060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ymem_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_pymem_alloc'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_pymem_alloc'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_pymem_alloc'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_pymem_alloc at 0x00007fdd591896a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyMem.w_compile_module of <pypy.module.cpyext.test.test_pymem.AppTestPyMem obj...ppTestPyMem.w_import_extension of <pypy.module.cpyext.test.test_pymem.AppTestPyMem object at 0x00007fdd51668fa8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd516692b8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> E test_pymem_alloc() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_pymem_alloc E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_pymem_alloc(): module = self.import_extension('foo', [ ("test", "METH_NOARGS", """ int *a, *b; a = PyMem_RawCalloc(4, 50); if (a[49] != 0) { PyErr_SetString(PyExc_ValueError, "1"); return NULL; } a[49] = 123456; b = PyMem_RawRealloc(a, 2000); b[499] = 789123; PyMem_RawFree(b); a = PyMem_Calloc(4, 50); if (a[49] != 0) { PyErr_SetString(PyExc_ValueError, "2"); return NULL; } a[49] = 123456; b = PyMem_Realloc(a, 2000); b[499] = 789123; PyMem_Free(b); Py_RETURN_NONE; """), ]) res = module.test() assert res is None try: test_pymem_alloc() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 151, in <module> test_pymem_alloc() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_pymem_alloc module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestBufferObject.test_signals _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd585923e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_signals'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_signals'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_signals'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_signals'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_signals'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_signals'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_signals'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50fe24d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_signals'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd794f17a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd794f17a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_signals'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_signals'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_signals'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_signals'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_signals at 0x00007fdd59189cb8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestBufferObject.w_compile_module of <pypy.module.cpyext.test.test_pysignals.AppTe....w_import_extension of <pypy.module.cpyext.test.test_pysignals.AppTestBufferObject object at 0x00007fdd7aa6b600>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7aa6b830> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> E test_signals() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_signals E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_signals(): module = self.import_extension('foo', [ ("test_signals", "METH_NOARGS", """ PyOS_sighandler_t handler = SIG_IGN; PyOS_sighandler_t oldhandler; int result = 0; oldhandler = PyOS_getsig(SIGFPE); handler = PyOS_setsig(SIGFPE, SIG_IGN); if( oldhandler != handler ) result += 1; handler = PyOS_setsig(SIGFPE, oldhandler); if( handler != SIG_IGN ) result += 2; return PyLong_FromLong(result); """), ], prologue = """ #include <signal.h> """) res = module.test_signals() assert res == 0 try: test_signals() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> test_signals() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_signals module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestThreads.test_allow_threads _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_allow_threads'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_allow_threads'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_allow_threads'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_allow_threads'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_allow_threads'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_allow_threads'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_allow_threads'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6acea890> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ow_threads'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a192020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a192020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ow_threads'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_allow_threads'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_allow_threads'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_allow_threads'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_allow_threads at 0x00007fdd7b3371f0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThreads.w_compile_module of <pypy.module.cpyext.test.test_pystate.AppTestThrea...Threads.w_import_extension of <pypy.module.cpyext.test.test_pystate.AppTestThreads object at 0x00007fdd595d64b8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd595d6758> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> E test_allow_threads() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_allow_threads E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_allow_threads(): module = self.import_extension('foo', [ ("test", "METH_NOARGS", """ Py_BEGIN_ALLOW_THREADS { Py_BLOCK_THREADS Py_UNBLOCK_THREADS } Py_END_ALLOW_THREADS Py_RETURN_NONE; """), ]) # Should compile at least module.test() try: test_allow_threads() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> test_allow_threads() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_allow_threads module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestThreads.test_gilstate _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_gilstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_gilstate'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_gilstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_gilstate'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_gilstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_gilstate'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_gilstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50d10138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_gilstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab5e360> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab5e360> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_gilstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_gilstate'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_gilstate'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_gilstate'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_gilstate at 0x00007fdd7b337268> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThreads.w_compile_module of <pypy.module.cpyext.test.test_pystate.AppTestThrea...Threads.w_import_extension of <pypy.module.cpyext.test.test_pystate.AppTestThreads object at 0x00007fdd6975a870>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6975a918> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> E test_gilstate() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_gilstate E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_gilstate(): module = self.import_extension('foo', [ ("double_ensure", "METH_O", ''' PyGILState_STATE state0, state1; int val = PyLong_AsLong(args); PyEval_InitThreads(); state0 = PyGILState_Ensure(); /* hangs here */ if (val != 0) { state1 = PyGILState_Ensure(); PyGILState_Release(state1); } PyGILState_Release(state0); Py_RETURN_NONE; '''), ]) module.double_ensure(0) module.double_ensure(1) try: test_gilstate() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 140, in <module> test_gilstate() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_gilstate module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestThreads.test_finalizing ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59242818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_finalizing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_finalizing'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_finalizing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_finalizing'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_finalizing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_finalizing'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_finalizing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58ce4d90> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...finalizing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab9a020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab9a020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...finalizing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_finalizing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_finalizing'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_finalizing'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_finalizing at 0x00007fdd7b3372e0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThreads.w_compile_module of <pypy.module.cpyext.test.test_pystate.AppTestThrea...Threads.w_import_extension of <pypy.module.cpyext.test.test_pystate.AppTestThreads object at 0x00007fdd6a874410>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a874560> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> E test_finalizing() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_finalizing E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_finalizing(): module = self.import_extension('foo', [ ("get", "METH_NOARGS", """ if (_Py_Finalizing) { return PyLong_FromLong(0); } if (_Py_Finalizing != NULL) { return PyLong_FromLong(1); } if (_Py_IsFinalizing()) { return PyLong_FromLong(2); } return PyLong_FromLong(3); """), ]) assert module.get() == 3 try: test_finalizing() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> test_finalizing() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_finalizing module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestThreads.test_thread_state_get _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd585923e0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_state_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_thread_state_get'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_state_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_thread_state_get'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_state_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_thread_state_get'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_state_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd51335470> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._state_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aea8020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7aea8020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._state_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_state_get'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_thread_state_get'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_thread_state_get'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_thread_state_get at 0x00007fdd7b337358> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThreads.w_compile_module of <pypy.module.cpyext.test.test_pystate.AppTestThrea...Threads.w_import_extension of <pypy.module.cpyext.test.test_pystate.AppTestThreads object at 0x00007fdd680f47c8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd680f4838> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> E test_thread_state_get() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_thread_state_get E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_thread_state_get(): module = self.import_extension('foo', [ ("get", "METH_NOARGS", """ PyThreadState *tstate = PyThreadState_Get(); if (tstate == NULL) { return PyLong_FromLong(0); } PyInterpreterState *interp = PyThreadState_GetInterpreter(tstate); if (interp != PyInterpreterState_Head()) { return PyLong_FromLong(1); } if (PyInterpreterState_Next(interp) != NULL) { return PyLong_FromLong(2); } if (tstate != _PyThreadState_UncheckedGet()) { return PyLong_FromLong(4); } if (tstate != PyGILState_GetThisThreadState()) { return PyLong_FromLong(8); } int64_t id = PyThreadState_GetID(tstate); return PyLong_FromLong(id + 100); """), ]) assert module.get() > 100 try: test_thread_state_get() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> test_thread_state_get() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_thread_state_get module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestThreads.test_threadstate_dict _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd592434c0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_threadstate_dict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_threadstate_dict'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_threadstate_dict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_threadstate_dict'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_threadstate_dict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_threadstate_dict'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_threadstate_dict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac711c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...state_dict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a18f6e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a18f6e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...state_dict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_threadstate_dict'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_threadstate_dict'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_threadstate_dict'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_threadstate_dict at 0x00007fdd7b337448> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThreads.w_compile_module of <pypy.module.cpyext.test.test_pystate.AppTestThrea...Threads.w_import_extension of <pypy.module.cpyext.test.test_pystate.AppTestThreads object at 0x00007fdd7b329280>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b1119f0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> E test_threadstate_dict() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_threadstate_dict E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_threadstate_dict(): module = self.import_extension('foo', [ ("getdict", "METH_NOARGS", """ PyObject *dict = PyThreadState_GetDict(); Py_INCREF(dict); return dict; """), ]) assert isinstance(module.getdict(), dict) try: test_threadstate_dict() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> test_threadstate_dict() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_threadstate_dict module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestThreads.test_savethread ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_savethread'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_savethread'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_savethread'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_savethread'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_savethread'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_savethread'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_savethread'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50d10250> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...savethread'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd504863e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd504863e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...savethread'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_savethread'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_savethread'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_savethread'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_savethread at 0x00007fdd7b3374c0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThreads.w_compile_module of <pypy.module.cpyext.test.test_pystate.AppTestThrea...Threads.w_import_extension of <pypy.module.cpyext.test.test_pystate.AppTestThreads object at 0x00007fdd68520ad8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6806e170> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> E test_savethread() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_savethread E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_savethread(): module = self.import_extension('foo', [ ("bounce", "METH_NOARGS", """ PyThreadState * tstate; if (PyEval_ThreadsInitialized() == 0) { PyEval_InitThreads(); } PyGILState_Ensure(); tstate = PyEval_SaveThread(); if (tstate == NULL) { return PyLong_FromLong(0); } PyEval_RestoreThread(tstate); if (PyThreadState_Get() != tstate) { return PyLong_FromLong(2); } return PyLong_FromLong(3); """), ]) res = module.bounce() assert res == 3 try: test_savethread() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 147, in <module> test_savethread() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_savethread module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestThreads.test_thread_and_gil ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59242818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_and_gil'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_thread_and_gil'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_and_gil'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_thread_and_gil'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_and_gil'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_thread_and_gil'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_and_gil'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a55c160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ad_and_gil'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5048a060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5048a060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ad_and_gil'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_and_gil'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_thread_and_gil'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_thread_and_gil'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_thread_and_gil at 0x00007fdd7b337538> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThreads.w_compile_module of <pypy.module.cpyext.test.test_pystate.AppTestThrea...Threads.w_import_extension of <pypy.module.cpyext.test.test_pystate.AppTestThreads object at 0x00007fdd504141e0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd50414250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 165, in <module> E test_thread_and_gil() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_thread_and_gil E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_thread_and_gil(): module = self.import_extension('foo', [ ("bounce", "METH_NOARGS", """ PyThreadState * tstate; PyObject *dict; PyGILState_STATE gilstate; if (PyEval_ThreadsInitialized() == 0) { PyEval_InitThreads(); } tstate = PyEval_SaveThread(); if (tstate == NULL) { return PyLong_FromLong(0); } if (PyGILState_Check() != 0) return PyLong_FromLong(-1); dict = PyThreadState_GetDict(); if (dict != NULL) { return PyLong_FromLong(1); } gilstate = PyGILState_Ensure(); dict = PyThreadState_GetDict(); if (dict == NULL) { return PyLong_FromLong(2); } if (PyGILState_Check() != 1) return PyLong_FromLong(-2); PyGILState_Release(gilstate); if (PyGILState_Check() != 0) return PyLong_FromLong(-3); PyEval_RestoreThread(tstate); if (PyThreadState_Get() != tstate) { return PyLong_FromLong(3); } if (PyGILState_Check() != 1) return PyLong_FromLong(-4); return PyLong_FromLong(4); """)]) res = module.bounce() assert res == 4 try: test_thread_and_gil() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 165, in <module> test_thread_and_gil() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_thread_and_gil module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________ AppTestThreads.test_nested_pygilstate_ensure _________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nested_pygilstate_ensure'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_nested_pygilstate_ensure'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nested_pygilstate_ensure'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_nested_pygilstate_ensure'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nested_pygilstate_ensure'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_nested_pygilstate_ensure'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nested_pygilstate_ensure'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ad1e138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ate_ensure'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd59244020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd59244020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ate_ensure'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nested_pygilstate_ensure'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_nested_pygilstate_ensure'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_nested_pygilstate_ensure'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_nested_pygilstate_ensure at 0x00007fdd7b3375b0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThreads.w_compile_module of <pypy.module.cpyext.test.test_pystate.AppTestThrea...Threads.w_import_extension of <pypy.module.cpyext.test.test_pystate.AppTestThreads object at 0x00007fdd697681e0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69768250> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> E test_nested_pygilstate_ensure() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_nested_pygilstate_ensure E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_nested_pygilstate_ensure(): module = self.import_extension('foo', [ ("bounce", "METH_NOARGS", """ PyGILState_STATE gilstate; PyObject *dict; if (PyEval_ThreadsInitialized() == 0) PyEval_InitThreads(); dict = PyThreadState_GetDict(); gilstate = PyGILState_Ensure(); PyGILState_Release(gilstate); if (PyThreadState_GetDict() != dict) return PyLong_FromLong(-2); return PyLong_FromLong(4); """)]) res = module.bounce() assert res == 4 try: test_nested_pygilstate_ensure() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> test_nested_pygilstate_ensure() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_nested_pygilstate_ensure module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestThreads.test_threadsinitialized ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_threadsinitialized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_threadsinitialized'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_threadsinitialized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_threadsinitialized'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_threadsinitialized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_threadsinitialized'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_threadsinitialized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac71358> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...nitialized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a18c060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a18c060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...nitialized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_threadsinitialized'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_threadsinitialized'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_threadsinitialized'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_threadsinitialized at 0x00007fdd7b337628> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThreads.w_compile_module of <pypy.module.cpyext.test.test_pystate.AppTestThrea...Threads.w_import_extension of <pypy.module.cpyext.test.test_pystate.AppTestThreads object at 0x00007fdd7b328170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b3281e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_threadsinitialized() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_threadsinitialized E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_threadsinitialized(): module = self.import_extension('foo', [ ("test", "METH_NOARGS", """ return PyLong_FromLong(PyEval_ThreadsInitialized()); """), ]) res = module.test() assert res in (0, 1) try: test_threadsinitialized() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_threadsinitialized() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_threadsinitialized module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestThreads.test_thread_interrupt _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07c020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_interrupt'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_thread_interrupt'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_interrupt'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_thread_interrupt'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_interrupt'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_thread_interrupt'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_interrupt'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd512fc6b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._interrupt'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a9ba0e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a9ba0e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._interrupt'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_thread_interrupt'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_thread_interrupt'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_thread_interrupt'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_thread_interrupt at 0x00007fdd7b3376a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThreads.w_compile_module of <pypy.module.cpyext.test.test_pystate.AppTestThrea...Threads.w_import_extension of <pypy.module.cpyext.test.test_pystate.AppTestThreads object at 0x00007fdd59002410>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd59002480> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 204, in <module> E test_thread_interrupt() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 126, in test_thread_interrupt E module = self.import_extension('disruptor', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_thread_interrupt(): if not self.runappdirect: skip("test fails untranslated for obscure reasons") import signal # to initialize the signal infrastructure import _thread as thread, time module = self.import_extension('disruptor', [ ("surprise", "METH_VARARGS", """ long tid; PyObject *exc; if (!PyArg_ParseTuple(args, "lO", &tid, &exc)) return NULL; return PyLong_FromLong(PyThreadState_SetAsyncExc(tid, exc)); """), ("nosurprise", "METH_VARARGS", """ long tid; if (!PyArg_ParseTuple(args, "l", &tid)) return NULL; return PyLong_FromLong(PyThreadState_SetAsyncExc(tid, NULL)); """), ]) # raise in another thread def f(): try: childstarted.append(thread.get_ident()) while 1: print("waiting in child") time.sleep(0.1) except KeyError: childstarted.pop() else: thread.interrupt_main() # to crash the test cancelled_exception = False for i in range(20): print(i) # first wait for the child to start childstarted = [] thread.start_new_thread(f, ()) for i in range(500): if childstarted: break time.sleep(0.1) # then interrupt it from the main thread res = module.surprise(childstarted[0], KeyError) assert res == 1 # try to cancel the interrupt # this is racing! the child could either have been terminated # already or not try: res = module.nosurprise(childstarted[0]) assert res in (0, 1) except IndexError: pass else: if res == 1: cancelled_exception = True # actually send exception res = module.surprise(childstarted[0], KeyError) assert res in (0, 1) # now wait for the exception to arrive in the child thread # which empties childstarted again for i in range(500): if not childstarted: break time.sleep(0.1) assert res == 1 if self.runappdirect: # only after translation assert cancelled_exception else: # best we can do is check that the test ran pass # raise to main with raises(ValueError): res = module.surprise(thread.get_ident(), ValueError) while 1: print("sleeping") time.sleep(0.1) try: test_thread_interrupt() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 204, in <module> test_thread_interrupt() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 126, in test_thread_interrupt module = self.import_extension('disruptor', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestThreads.test_frame_tstate_tracing ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frame_tstate_tracing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_frame_tstate_tracing'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frame_tstate_tracing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_frame_tstate_tracing'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frame_tstate_tracing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_frame_tstate_tracing'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frame_tstate_tracing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d78cf0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...te_tracing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd506ecb60> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd506ecb60> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...te_tracing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_frame_tstate_tracing'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_frame_tstate_tracing'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_frame_tstate_tracing'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_frame_tstate_tracing at 0x00007fdd7b337178> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThreads.w_compile_module of <pypy.module.cpyext.test.test_pystate.AppTestThrea...Threads.w_import_extension of <pypy.module.cpyext.test.test_pystate.AppTestThreads object at 0x00007fdd6a7c42f8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a7c4410> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 240, in <module> E test_frame_tstate_tracing() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_frame_tstate_tracing E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_frame_tstate_tracing(): import sys, threading module = self.import_extension('foo', [ ("call_in_temporary_c_thread", "METH_O", """ PyObject *res = NULL; test_c_thread_t test_c_thread; long thread; PyEval_InitThreads(); test_c_thread.start_event = PyThread_allocate_lock(); test_c_thread.exit_event = PyThread_allocate_lock(); test_c_thread.callback = NULL; if (!test_c_thread.start_event || !test_c_thread.exit_event) { PyErr_SetString(PyExc_RuntimeError, "could not allocate lock"); goto exit; } Py_INCREF(args); test_c_thread.callback = args; PyThread_acquire_lock(test_c_thread.start_event, 1); PyThread_acquire_lock(test_c_thread.exit_event, 1); thread = PyThread_start_new_thread(temporary_c_thread, &test_c_thread); if (thread == -1) { PyErr_SetString(PyExc_RuntimeError, "unable to start the thread"); PyThread_release_lock(test_c_thread.start_event); PyThread_release_lock(test_c_thread.exit_event); goto exit; } PyThread_acquire_lock(test_c_thread.start_event, 1); PyThread_release_lock(test_c_thread.start_event); Py_BEGIN_ALLOW_THREADS PyThread_acquire_lock(test_c_thread.exit_event, 1); PyThread_release_lock(test_c_thread.exit_event); Py_END_ALLOW_THREADS Py_INCREF(Py_None); res = Py_None; exit: Py_CLEAR(test_c_thread.callback); if (test_c_thread.start_event) PyThread_free_lock(test_c_thread.start_event); if (test_c_thread.exit_event) PyThread_free_lock(test_c_thread.exit_event); return res; """), ], prologue = """ #include "pythread.h" typedef struct { PyThread_type_lock start_event; PyThread_type_lock exit_event; PyObject *callback; } test_c_thread_t; static void temporary_c_thread(void *data) { test_c_thread_t *test_c_thread = data; PyGILState_STATE state; PyObject *res; PyThread_release_lock(test_c_thread->start_event); /* Allocate a Python thread state for this thread */ state = PyGILState_Ensure(); res = PyObject_CallFunction(test_c_thread->callback, "", NULL); Py_CLEAR(test_c_thread->callback); if (res == NULL) { PyErr_Print(); } else { Py_DECREF(res); } /* Destroy the Python thread state for this thread */ PyGILState_Release(state); PyThread_release_lock(test_c_thread->exit_event); /*PyThread_exit_thread(); NOP (on linux) and not implememnted */ }; """) def noop_trace(frame, event, arg): # no operation return noop_trace def generator(): while 1: yield "genereator" def callback(): if callback.gen is None: callback.gen = generator() return next(callback.gen) callback.gen = None old_trace = sys.gettrace() sys.settrace(noop_trace) try: # Install a trace function threading.settrace(noop_trace) # Create a generator in a C thread which exits after the call module.call_in_temporary_c_thread(callback) # Call the generator in a different Python thread, check that the # generator didn't keep a reference to the destroyed thread state for test in range(3): # The trace function is still called here callback() finally: sys.settrace(old_trace) try: test_frame_tstate_tracing() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 240, in <module> test_frame_tstate_tracing() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_frame_tstate_tracing module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestPyStrHex.test_simple __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd58593790>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_simple'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_simple'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_simple'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ad1e278> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a9d0460> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a9d0460> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_simple'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_simple'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_simple'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_simple at 0x00007fdd59189e98> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestPyStrHex.w_compile_module of <pypy.module.cpyext.test.test_pystrhex.AppTestPyS...trHex.w_import_extension of <pypy.module.cpyext.test.test_pystrhex.AppTestPyStrHex object at 0x00007fdd69768330>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd697688e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> E test_simple() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_simple E module = self.import_extension('strhex', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_simple(): module = self.import_extension('strhex', [ ("new", "METH_NOARGS", """ static char a[] = { (char)255, 0, 65 }; PyObject *o1 = _Py_strhex(a, 3); PyObject *o2 = _Py_strhex_bytes(a, 3); return PyTuple_Pack(2, o1, o2); """)], prologue=""" #include <pystrhex.h> """) o1, o2 = module.new() assert type(o1) is str assert type(o2) is bytes assert o1 == u"ff0041" assert o2 == b"ff0041" try: test_simple() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 138, in <module> test_simple() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_simple module = self.import_extension('strhex', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________ AppTestStringToDouble.test_endswith_space ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59242818>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_endswith_space'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_endswith_space'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_endswith_space'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_endswith_space'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_endswith_space'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_endswith_space'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_endswith_space'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd7b29d650> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...with_space'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd51682020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd51682020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...with_space'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_endswith_space'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_endswith_space'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_endswith_space'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_endswith_space at 0x00007fdd7b337bc8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestStringToDouble.w_compile_module of <pypy.module.cpyext.test.test_pystrtod.AppT...w_import_extension of <pypy.module.cpyext.test.test_pystrtod.AppTestStringToDouble object at 0x00007fdd7af80138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7af80330> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_endswith_space() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_endswith_space E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_endswith_space(): module = self.import_extension('foo', [ ("test_convert", "METH_O", ''' Py_ssize_t size; const char *utf8 = PyUnicode_AsUTF8AndSize(args, &size); double result = PyOS_string_to_double(utf8, NULL, NULL); if (result == -1.0 && PyErr_Occurred()) { return NULL; } return PyFloat_FromDouble(result); '''), ]) for s in ('.123 ', 'inf ', 'nan ', '1e500 '): try: module.test_convert(s) except ValueError as e: pass else: assert False, 'did not raise' try: test_endswith_space() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_endswith_space() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_endswith_space module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________ AppTestSequenceObject.test_sequence_macro_cast ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sequence_macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_sequence_macro_cast'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sequence_macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_sequence_macro_cast'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sequence_macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_sequence_macro_cast'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sequence_macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50d10390> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd504863e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd504863e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sequence_macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_sequence_macro_cast'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_sequence_macro_cast'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_sequence_macro_cast at 0x00007fdd7b367268> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSequenceObject.w_compile_module of <pypy.module.cpyext.test.test_sequence.AppT...w_import_extension of <pypy.module.cpyext.test.test_sequence.AppTestSequenceObject object at 0x00007fdd69c9e170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69c9e6e8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_sequence_macro_cast() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_sequence_macro_cast E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_sequence_macro_cast(): module = self.import_extension('foo', [ ("test_macro_cast", "METH_NOARGS", """ PyObject *o = PyList_New(0); PyListObject* l; PyList_Append(o, o); l = (PyListObject*)o; PySequence_Fast_GET_ITEM(o, 0); PySequence_Fast_GET_ITEM(l, 0); PySequence_Fast_GET_SIZE(o); PySequence_Fast_GET_SIZE(l); PySequence_ITEM(o, 0); PySequence_ITEM(l, 0); return o; """ ) ]) try: test_sequence_macro_cast() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_sequence_macro_cast() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_sequence_macro_cast module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestSequenceObject.test_fast ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a084098>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fast'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fast'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fast'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd58d78e80> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...'test_fast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a971020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a971020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...'test_fast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fast'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fast'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fast at 0x00007fdd7b3672e0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSequenceObject.w_compile_module of <pypy.module.cpyext.test.test_sequence.AppT...w_import_extension of <pypy.module.cpyext.test.test_sequence.AppTestSequenceObject object at 0x00007fdd6a7c4640>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a7c46b0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 165, in <module> E test_fast() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fast E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fast(): module = self.import_extension('foo', [ ("test_fast_sequence", "METH_VARARGS", """ int size, i; PyTypeObject * common_type; PyObject *foo, **objects; PyObject * seq = PyTuple_GetItem(args, 0); if (seq == NULL) Py_RETURN_NONE; foo = PySequence_Fast(seq, "some string"); objects = PySequence_Fast_ITEMS(foo); if (objects == NULL) return NULL; size = PySequence_Fast_GET_SIZE(foo); for (i = 0; i < size; ++i) { if (objects[i] != PySequence_Fast_GET_ITEM(foo, i)) return PyBool_FromLong(0); } common_type = size > 0 ? Py_TYPE(objects[0]) : NULL; for (i = 1; i < size; ++i) { if (Py_TYPE(objects[i]) != common_type) { common_type = NULL; break; } } Py_DECREF(foo); if (common_type == NULL) return PyBool_FromLong(0); Py_DECREF(common_type); return PyBool_FromLong(1); """)]) s = [1, 2, 3, 4] assert module.test_fast_sequence(s[0:-1]) assert module.test_fast_sequence(s[::-1]) s = (1, 2, 3, 4) assert module.test_fast_sequence(s[0:-1]) assert module.test_fast_sequence(s[::-1]) s = (1, 2) # specialized tuple assert module.test_fast_sequence(s[0:-1]) assert module.test_fast_sequence(s[::-1]) s = "1234" assert module.test_fast_sequence(s[0:-1]) assert module.test_fast_sequence(s[::-1]) try: test_fast() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 165, in <module> test_fast() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fast module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ___________________ AppTestSequenceObject.test_fast_keyerror ___________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fast_keyerror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fast_keyerror'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fast_keyerror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fast_keyerror'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fast_keyerror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fast_keyerror'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fast_keyerror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50fe20c0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_keyerror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a0c62e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a0c62e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_keyerror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fast_keyerror'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_fast_keyerror'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_fast_keyerror'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_fast_keyerror at 0x00007fdd7b367358> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSequenceObject.w_compile_module of <pypy.module.cpyext.test.test_sequence.AppT...w_import_extension of <pypy.module.cpyext.test.test_sequence.AppTestSequenceObject object at 0x00007fdd508fc170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd508fc1e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> E test_fast_keyerror() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fast_keyerror E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_fast_keyerror(): module = self.import_extension('foo', [ ("test_fast_sequence", "METH_VARARGS", """ PyObject *foo; PyObject * seq = PyTuple_GetItem(args, 0); if (seq == NULL) Py_RETURN_NONE; foo = PySequence_Fast(seq, "Could not convert object to sequence"); if (foo != NULL) { return foo; } if (PyErr_ExceptionMatches(PyExc_KeyError)) { PyErr_Clear(); return PyBool_FromLong(1); } return NULL; """)]) class Map(object): def __len__(self): return 1 def __getitem__(self, index): raise KeyError() assert module.test_fast_sequence(Map()) is True try: test_fast_keyerror() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> test_fast_keyerror() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_fast_keyerror module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestSequenceObject.test_getitem_c _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_c'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getitem_c'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_c'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getitem_c'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_c'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_getitem_c'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_c'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac7e638> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._getitem_c'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a09e020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a09e020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._getitem_c'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_getitem_c'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_getitem_c'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_getitem_c'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_getitem_c at 0x00007fdd7b3673d0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSequenceObject.w_compile_module of <pypy.module.cpyext.test.test_sequence.AppT...w_import_extension of <pypy.module.cpyext.test.test_sequence.AppTestSequenceObject object at 0x00007fdd595c0250>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd595c0368> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 161, in <module> E test_getitem_c() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getitem_c E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_getitem_c(): module = self.import_extension('foo', [ ("dict_assignment", "METH_VARARGS", """ PyObject *cls = PyTuple_GetItem(args, 0); PyObject *func = PyTuple_GetItem(args, 1); if (cls == NULL) return NULL; if (func == NULL) return NULL; /* Assign the func to the cls.__dict__ */ if (PyObject_SetAttrString(cls, "__getitem__", func) != 0){ return NULL; } Py_RETURN_NONE; """), ("test_get_item", "METH_VARARGS", """ PyObject *obj, *result=NULL; int i; if (PyArg_ParseTuple(args, "Oi:test_get_item", &obj, &i)) { result = PySequence_GetItem(obj, i); }; return result; """), ]) class A(object): pass def getitem(*args): return 42 module.dict_assignment(A, getitem) a = A() assert a[12] == 42 assert module.test_get_item(a, 0) == 42 assert module.test_get_item(b'a', 0) == ord('a') e = raises(IndexError, module.test_get_item, b'a', -2) assert "bytes index out of range" in str(e.value) raises(IndexError, module.test_get_item, b'a', 1) try: test_getitem_c() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 161, in <module> test_getitem_c() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_getitem_c module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________________ AppTestSetObject.test_set_macro_cast _____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07dbc8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_set_macro_cast'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_set_macro_cast'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_set_macro_cast'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50d10598> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a0a2260> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a0a2260> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_set_macro_cast'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_set_macro_cast'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_set_macro_cast'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_set_macro_cast at 0x00007fdd51372098> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSetObject.w_compile_module of <pypy.module.cpyext.test.test_setobject.AppTestS...ect.w_import_extension of <pypy.module.cpyext.test.test_setobject.AppTestSetObject object at 0x00007fdd680f4c28>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd680f50c0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> E test_set_macro_cast() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_set_macro_cast E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_set_macro_cast(): module = self.import_extension('foo', [ ("test_macro_cast", "METH_NOARGS", """ PyObject* o = PySet_New(NULL); // no PySetObject char* dumb_pointer = (char*) o; PySet_GET_SIZE(o); PySet_GET_SIZE(dumb_pointer); return o; """) ]) try: test_set_macro_cast() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 135, in <module> test_set_macro_cast() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_set_macro_cast module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestSliceMembers.test_members _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a331a60>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_members'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_members'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_members'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_members'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_members'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_members'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_members'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a55c160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_members'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a09a020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a09a020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_members'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_members'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_members'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_members'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_members at 0x00007fdd513727a0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSliceMembers.w_compile_module of <pypy.module.cpyext.test.test_sliceobject.App..._import_extension of <pypy.module.cpyext.test.test_sliceobject.AppTestSliceMembers object at 0x00007fdd50624138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd506243a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> E test_members() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_members E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_members(): module = self.import_extension('foo', [ ("clone", "METH_O", """ PySliceObject *slice = (PySliceObject *)args; if (Py_TYPE(slice) != &PySlice_Type) { PyErr_SetNone(PyExc_ValueError); return NULL; } return PySlice_New(slice->start, slice->stop, slice->step); """), ]) s = slice(10, 20, 30) assert module.clone(s) == s try: test_members() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> test_members() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_members module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestSliceMembers.test_nulls ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59243178>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nulls'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_nulls'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nulls'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_nulls'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nulls'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_nulls'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nulls'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50fe2750> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_nulls'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79564920> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd79564920> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_nulls'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_nulls'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_nulls'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_nulls'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_nulls at 0x00007fdd51372818> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSliceMembers.w_compile_module of <pypy.module.cpyext.test.test_sliceobject.App..._import_extension of <pypy.module.cpyext.test.test_sliceobject.AppTestSliceMembers object at 0x00007fdd6938c1a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6938c218> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> E test_nulls() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_nulls E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_nulls(): module = self.import_extension('foo', [ ("nullslice", "METH_NOARGS", """ return PySlice_New(NULL, NULL, NULL); """), ]) assert module.nullslice() == slice(None, None, None) try: test_nulls() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 129, in <module> test_nulls() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_nulls module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestSliceMembers.test_ellipsis _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07dbc8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_ellipsis'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_ellipsis'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_ellipsis'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_ellipsis'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_ellipsis'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_ellipsis'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_ellipsis'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd505dcb38> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_ellipsis'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab5a7a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6ab5a7a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...t_ellipsis'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_ellipsis'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_ellipsis'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_ellipsis'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_ellipsis at 0x00007fdd51372890> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSliceMembers.w_compile_module of <pypy.module.cpyext.test.test_sliceobject.App..._import_extension of <pypy.module.cpyext.test.test_sliceobject.AppTestSliceMembers object at 0x00007fdd78c95d00>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd78c95d70> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> E test_ellipsis() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_ellipsis E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_ellipsis(): module = self.import_extension('foo', [ ("get_ellipsis", "METH_NOARGS", """ PyObject *ret = Py_Ellipsis; Py_INCREF(ret); return ret; """), ]) assert module.get_ellipsis() is Ellipsis try: test_ellipsis() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> test_ellipsis() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_ellipsis module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestSliceMembers.test_typecheck ______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typecheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typecheck'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typecheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typecheck'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typecheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typecheck'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typecheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50d107f0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._typecheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58bd45a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58bd45a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._typecheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typecheck'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_typecheck'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_typecheck'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_typecheck at 0x00007fdd51372908> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSliceMembers.w_compile_module of <pypy.module.cpyext.test.test_sliceobject.App..._import_extension of <pypy.module.cpyext.test.test_sliceobject.AppTestSliceMembers object at 0x00007fdd680f51a0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd680f5210> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> E test_typecheck() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_typecheck E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_typecheck(): module = self.import_extension('foo', [ ("check", "METH_O", """ PySliceObject *slice = (PySliceObject *)args; return PyLong_FromLong(PySlice_Check(slice)); """), ]) s = slice(10, 20, 30) assert module.check(s) try: test_typecheck() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> test_typecheck() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_typecheck module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestSliceMembers.test_Unpack ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a084368>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Unpack'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Unpack'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Unpack'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Unpack'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Unpack'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_Unpack'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Unpack'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a55c5c0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_Unpack'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58be4020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58be4020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...est_Unpack'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_Unpack'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_Unpack'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_Unpack'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_Unpack at 0x00007fdd51372980> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSliceMembers.w_compile_module of <pypy.module.cpyext.test.test_sliceobject.App..._import_extension of <pypy.module.cpyext.test.test_sliceobject.AppTestSliceMembers object at 0x00007fdd51669670>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd516696e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 153, in <module> E test_Unpack() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_Unpack E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_Unpack(): from sys import maxsize as M module = self.import_extension('foo', [ ("check", "METH_O", """ Py_ssize_t start, stop, step; if (PySlice_Unpack(args, &start, &stop, &step) != 0) return NULL; return Py_BuildValue("nnn", start, stop, step); """), ]) assert module.check(slice(10, 20, 1)) == (10, 20, 1) assert module.check(slice(None, 20, 1)) == (0, 20, 1) assert module.check(slice(10, None, 3)) == (10, M, 3) assert module.check(slice(10, 20, None)) == (10, 20, 1) assert module.check(slice(20, 5, 1)) == (20, 5, 1) assert module.check(slice(None, None, None)) == (0, M, 1) assert module.check(slice(20, 10, -1)) == (20, 10, -1) assert module.check(slice(None, 20, -1)) == (M, 20, -1) assert module.check(slice(10, None, -1)) == (10, -M-1, -1) assert module.check(slice(M*2, M*3, 1)) == (M, M, 1) assert module.check(slice(M*2, -123, 1)) == (M, -123, 1) assert module.check(slice(-M*2, -M*3, 1)) == (-M-1, -M-1, 1) assert module.check(slice(-M*2, 123, -2)) == (-M-1, 123, -2) with raises(ValueError): module.check(slice(2, 3, 0)) assert module.check(slice(2, 3, -M-1)) == (2, 3, -M) assert module.check(slice(2, 3, -M-10)) == (2, 3, -M) assert module.check(slice(2, 3, M+10)) == (2, 3, M) try: test_Unpack() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 153, in <module> test_Unpack() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_Unpack module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________ AppTestSliceMembers.test_AdjustIndices ____________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59243178>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AdjustIndices'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AdjustIndices'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AdjustIndices'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AdjustIndices'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AdjustIndices'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_AdjustIndices'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AdjustIndices'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50fe2750> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ustIndices'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58b20ba0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd58b20ba0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ustIndices'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_AdjustIndices'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_AdjustIndices'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_AdjustIndices'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_AdjustIndices at 0x00007fdd513729f8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSliceMembers.w_compile_module of <pypy.module.cpyext.test.test_sliceobject.App..._import_extension of <pypy.module.cpyext.test.test_sliceobject.AppTestSliceMembers object at 0x00007fdd5131e720>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5131e8a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> E test_AdjustIndices() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_AdjustIndices E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_AdjustIndices(): module = self.import_extension('foo', [ ("check", "METH_NOARGS", """ Py_ssize_t start = -35, stop = 99999, step = 10, result; result = PySlice_AdjustIndices(100, &start, &stop, step); return Py_BuildValue("nnnn", result, start, stop, step); """), ]) assert module.check() == (4, 65, 100, 10) try: test_AdjustIndices() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> test_AdjustIndices() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_AdjustIndices module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestStructSeq.test_StructSeq ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_StructSeq'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_StructSeq'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_StructSeq'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_StructSeq'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_StructSeq'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_StructSeq'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_StructSeq'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd505dd970> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._StructSeq'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd513de060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd513de060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._StructSeq'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_StructSeq'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_StructSeq'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_StructSeq'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_StructSeq at 0x00007fdd51372cc8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestStructSeq.w_compile_module of <pypy.module.cpyext.test.test_structseq.AppTestS...Seq.w_import_extension of <pypy.module.cpyext.test.test_structseq.AppTestStructSeq object at 0x00007fdd50502170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd50502678> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 176, in <module> E test_StructSeq() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_StructSeq E module = self.import_extension('foo', E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_StructSeq(): module = self.import_extension('foo', prologue=""" #include <structseq.h> static PyTypeObject* PyDatatype; static PyStructSequence_Field Data_fields[] = { {"value", "value_doc"}, {"value2", "value_doc"}, {"text", "text_doc"}, {"other", "other_doc"}, {NULL} /* Sentinel */ }; static PyStructSequence_Desc Data_desc = { "cpyext_test.data", /*name*/ "data_doc", /*doc*/ Data_fields, /*fields*/ 3, /*n_in_sequence*/ }; """, more_init = """ """, functions=[ ("new_structdata", "METH_NOARGS", """ PyObject *seq; PyDatatype = PyStructSequence_NewType(&Data_desc); seq = PyStructSequence_New(PyDatatype); if (!seq) return NULL; PyStructSequence_SET_ITEM(seq, 0, PyLong_FromLong(42)); PyStructSequence_SET_ITEM(seq, 1, PyLong_FromLong(43)); PyStructSequence_SetItem(seq, 2, PyUnicode_FromString("hello")); PyStructSequence_SetItem(seq, 3, PyUnicode_FromString("other")); Py_DECREF(PyDatatype); return seq; """), ("getitem", "METH_VARARGS", """ PyObject *obj, *result=NULL; int i; if (PyArg_ParseTuple(args, "Oi:test_get_item", &obj, &i)) { result = PyStructSequence_GetItem(obj, i); Py_INCREF(result); }; return result; """), ]) s = module.new_structdata() assert tuple(s) == (42, 43, 'hello') assert s.value == 42 assert s.text == 'hello' assert s.other == 'other' assert 'hello' in s assert 'other' not in s assert module.getitem(s, 1) == 43 del s try: test_StructSeq() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 176, in <module> test_StructSeq() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_StructSeq module = self.import_extension('foo', ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestSysModule.test_sysmodule ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07dbc8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sysmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_sysmodule'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sysmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_sysmodule'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sysmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_sysmodule'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sysmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ad1e4a8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._sysmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5144a020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5144a020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._sysmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sysmodule'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_sysmodule'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_sysmodule'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_sysmodule at 0x00007fdd51372bd8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSysModule.w_compile_module of <pypy.module.cpyext.test.test_sysmodule.AppTestS...ule.w_import_extension of <pypy.module.cpyext.test.test_sysmodule.AppTestSysModule object at 0x00007fdd51332448>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd51332678> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> E test_sysmodule() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_sysmodule E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_sysmodule(): module = self.import_extension('foo', [ ("get", "METH_VARARGS", """ char *name = _PyUnicode_AsString(PyTuple_GetItem(args, 0)); PyObject *retval = PySys_GetObject(name); return PyBool_FromLong(retval != NULL); """)]) assert module.get("excepthook") assert not module.get("spam_spam_spam") try: test_sysmodule() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 131, in <module> test_sysmodule() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_sysmodule module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestSysModule.test_writestdout _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a0845c0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_writestdout'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_writestdout'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_writestdout'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_writestdout'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_writestdout'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_writestdout'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_writestdout'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a582160> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ritestdout'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a0ca020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a0ca020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ritestdout'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_writestdout'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_writestdout'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_writestdout'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_writestdout at 0x00007fdd51372b60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSysModule.w_compile_module of <pypy.module.cpyext.test.test_sysmodule.AppTestS...ule.w_import_extension of <pypy.module.cpyext.test.test_sysmodule.AppTestSysModule object at 0x00007fdd7aef8138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7aef81a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> E test_writestdout() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_writestdout E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_writestdout(): module = self.import_extension('foo', [ ("writestdout", "METH_NOARGS", """ PySys_WriteStdout("format: %d\\n", 42); Py_RETURN_NONE; """)]) import sys, io prev = sys.stdout sys.stdout = io.StringIO() try: module.writestdout() assert sys.stdout.getvalue() == "format: 42\n" finally: sys.stdout = prev try: test_writestdout() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 136, in <module> test_writestdout() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_writestdout module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestSysModule.test_sysgetset ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59243538>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sysgetset'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_sysgetset'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sysgetset'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_sysgetset'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sysgetset'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_sysgetset'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sysgetset'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50fe29d0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._sysgetset'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a18e2a0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a18e2a0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._sysgetset'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_sysgetset'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_sysgetset'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_sysgetset'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_sysgetset at 0x00007fdd51372c50> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestSysModule.w_compile_module of <pypy.module.cpyext.test.test_sysmodule.AppTestS...ule.w_import_extension of <pypy.module.cpyext.test.test_sysmodule.AppTestSysModule object at 0x00007fdd5131e988>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd5131eaa0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> E test_sysgetset() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_sysgetset E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_sysgetset(): module = self.import_extension('foo', [ ("setobject", "METH_VARARGS", """ const char *name; Py_ssize_t size; PyObject *value = NULL; if (!PyArg_ParseTuple(args, "z#|O", &name, &size, &value)) { return NULL; } if (value == Py_None) { value = NULL; } int ret = PySys_SetObject(name, value); if (ret < 0) return NULL; return PyLong_FromLong(ret); """)], PY_SSIZE_T_CLEAN=True) import sys module.setobject("newattr", 1) assert sys.newattr == 1 module.setobject("newattr") assert not hasattr(sys, 'newattr') # Cpython lets you call this, even if the attribute does not exist module.setobject("newattr") with raises(UnicodeDecodeError): module.setobject(b'\xff', 1) try: test_sysgetset() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 148, in <module> test_sysgetset() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_sysgetset module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestThread.test_acquire_lock ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a084ea8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_acquire_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_acquire_lock'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_acquire_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_acquire_lock'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_acquire_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_acquire_lock'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_acquire_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a582958> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...quire_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a0b1ee0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a0b1ee0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...quire_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_acquire_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_acquire_lock'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_acquire_lock'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_acquire_lock at 0x00007fdd51372f20> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThread.w_compile_module of <pypy.module.cpyext.test.test_thread.AppTestThread ...estThread.w_import_extension of <pypy.module.cpyext.test.test_thread.AppTestThread object at 0x00007fdd6abeade8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd587a5cc8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> E test_acquire_lock() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_acquire_lock E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_acquire_lock(): module = self.import_extension('foo', [ ("test_acquire_lock", "METH_NOARGS", """ #ifndef PyThread_allocate_lock #error "seems we are not accessing PyPy's functions" #endif PyThread_type_lock lock = PyThread_allocate_lock(); if (PyThread_acquire_lock(lock, 1) != 1) { PyErr_SetString(PyExc_AssertionError, "first acquire"); return NULL; } if (PyThread_acquire_lock(lock, 0) != 0) { PyErr_SetString(PyExc_AssertionError, "second acquire"); return NULL; } PyThread_free_lock(lock); Py_RETURN_NONE; """), ]) module.test_acquire_lock() try: test_acquire_lock() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 143, in <module> test_acquire_lock() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_acquire_lock module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestThread.test_release_lock ________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_release_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_release_lock'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_release_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_release_lock'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_release_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_release_lock'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_release_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ad1e6d8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...lease_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6acd8020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6acd8020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...lease_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_release_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_release_lock'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_release_lock'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_release_lock at 0x00007fdd51372f98> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThread.w_compile_module of <pypy.module.cpyext.test.test_thread.AppTestThread ...estThread.w_import_extension of <pypy.module.cpyext.test.test_thread.AppTestThread object at 0x00007fdd69758170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd697581e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_release_lock() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_release_lock E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_release_lock(): module = self.import_extension('foo', [ ("test_release_lock", "METH_NOARGS", """ #ifndef PyThread_release_lock #error "seems we are not accessing PyPy's functions" #endif PyThread_type_lock lock = PyThread_allocate_lock(); PyThread_acquire_lock(lock, 1); PyThread_release_lock(lock); if (PyThread_acquire_lock(lock, 0) != 1) { PyErr_SetString(PyExc_AssertionError, "first acquire"); return NULL; } PyThread_free_lock(lock); Py_RETURN_NONE; """), ]) module.test_release_lock() try: test_release_lock() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_release_lock() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_release_lock module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________________ AppTestThread.test_timed_lock _________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6a0845c0>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_timed_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_timed_lock'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_timed_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_timed_lock'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_timed_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_timed_lock'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_timed_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac1eb88> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...timed_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b014060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd7b014060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...timed_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_timed_lock'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_timed_lock'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_timed_lock'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_timed_lock at 0x00007fdd51373010> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThread.w_compile_module of <pypy.module.cpyext.test.test_thread.AppTestThread ...estThread.w_import_extension of <pypy.module.cpyext.test.test_thread.AppTestThread object at 0x00007fdd6a262170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a262218> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 188, in <module> E test_timed_lock() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_timed_lock E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_timed_lock(): module = self.import_extension('foo', [ ("timed_acquire_lock", "METH_O", """ #ifndef PyThread_acquire_lock_timed #error "seems we are not accessing PyPy's functions" #endif PyLockStatus acquire_result; int microseconds = PyLong_AsLong(args); Py_BEGIN_ALLOW_THREADS acquire_result = PyThread_acquire_lock_timed(global_lock, microseconds, 0); Py_END_ALLOW_THREADS if (acquire_result == PY_LOCK_ACQUIRED) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE; } """), ("release_lock", "METH_NOARGS", """ PyThread_release_lock(global_lock); Py_RETURN_NONE; """), ("cleanup_lock", "METH_NOARGS", """ // cleanup isn't part of the test, but I'd feel guilty otherwise PyThread_free_lock(global_lock); global_lock=NULL; Py_RETURN_NONE; """ ) ], prologue="static PyThread_type_lock global_lock;", more_init="global_lock = PyThread_allocate_lock();" ) try: import threading import time failure = [] assert module.timed_acquire_lock(-1) main_thread_should_release_the_lock_barrier = threading.Barrier(2) def thread_func(): try: if module.timed_acquire_lock(0): failure.append("Lock should be held elsewhere") return if module.timed_acquire_lock(1): failure.append("Lock should be held elsewhere") return finally: main_thread_should_release_the_lock_barrier.wait() if not module.timed_acquire_lock(1000000): failure.append("Lock should have become available") return module.release_lock() thread = threading.Thread(target=thread_func) thread.start() main_thread_should_release_the_lock_barrier.wait() # At this point, thread_func should be waiting 1s for the lock, # so sleep a short amount of time then let it have the lock. time.sleep(0.01) module.release_lock() thread.join() assert not failure, failure finally: module.cleanup_lock() try: test_timed_lock() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 188, in <module> test_timed_lock() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_timed_lock module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ____________________________ AppTestThread.test_tss ____________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59243f10>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tss'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_tss'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tss'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_tss'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tss'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_tss'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tss'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50d10c50> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i... 'test_tss'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd502f2260> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd502f2260> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i... 'test_tss'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tss'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_tss'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_tss'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_tss at 0x00007fdd51373100> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestThread.w_compile_module of <pypy.module.cpyext.test.test_thread.AppTestThread ...estThread.w_import_extension of <pypy.module.cpyext.test.test_thread.AppTestThread object at 0x00007fdd69ca7520>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd69cc8410> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 180, in <module> E test_tss() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_tss E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_tss(): module = self.import_extension('foo', [ ("tss", "METH_NOARGS", """ void *tss_key = NULL; /* non-Py_LIMITED_API */ Py_tss_t _tss_key = Py_tss_NEEDS_INIT; int the_value = 1; if ( PyThread_tss_is_created(&_tss_key) ) { PyErr_SetString(PyExc_AssertionError, "tss_is_created should not succeed yet"); return NULL; } /* This should be a no-op */ PyThread_tss_delete(&_tss_key); /* Py_LIMITED_API */ tss_key = PyThread_tss_alloc(); if ( PyThread_tss_is_created(tss_key) ) { PyErr_SetString(PyExc_AssertionError, "tss_is_created should not succeed yet"); return NULL; } if (PyThread_tss_create(tss_key)) { return NULL; } if (! PyThread_tss_is_created(tss_key)) { return NULL; } /* Be sure additional calls succeed */ if (PyThread_tss_create(tss_key)) { return NULL; } if (PyThread_tss_get(tss_key) != NULL) { PyErr_SetString(PyExc_AssertionError, "tss_get should not succeed yet"); return NULL; } if (PyThread_tss_set(tss_key, (void *)&the_value)) { PyErr_SetString(PyExc_AssertionError, "tss_set failed"); return NULL; } void *val = PyThread_tss_get(tss_key); if (val == NULL) { PyErr_SetString(PyExc_AssertionError, "tss_get failed"); return NULL; } if (the_value != *(int*)val) { PyErr_SetString(PyExc_AssertionError, "retrieved value is wrong"); return NULL; } PyThread_tss_free(tss_key); Py_RETURN_NONE; """), ]) module.tss() try: test_tss() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 180, in <module> test_tss() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_tss module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestTuple.test_refcounts __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_refcounts'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_refcounts'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_refcounts'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a61e250> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd516cc060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd516cc060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcounts'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_refcounts'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_refcounts'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_refcounts at 0x00007fdd513cd268> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestTuple.w_compile_module of <pypy.module.cpyext.test.test_tupleobject.AppTestTup...Tuple.w_import_extension of <pypy.module.cpyext.test.test_tupleobject.AppTestTuple object at 0x00007fdd6a4dc1a8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd6a4dc3a0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 168, in <module> E test_refcounts() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_refcounts E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_refcounts(): module = self.import_extension('foo', [ ("run", "METH_NOARGS", """ PyObject *item = PyTuple_New(0); PyObject *t = PyTuple_New(1); #ifdef PYPY_VERSION // PyPy starts even empty tuples with a refcount of 1. const int initial_item_refcount = 1; #else // CPython can cache (). const int initial_item_refcount = item->ob_refcnt; #endif // PYPY_VERSION if (t->ob_refcnt != 1 || item->ob_refcnt != initial_item_refcount) { PyErr_SetString(PyExc_SystemError, "bad initial refcnt"); return NULL; } PyTuple_SetItem(t, 0, item); if (t->ob_refcnt != 1) { PyErr_SetString(PyExc_SystemError, "SetItem: t refcnt != 1"); return NULL; } if (item->ob_refcnt != initial_item_refcount) { PyErr_SetString(PyExc_SystemError, "GetItem: item refcnt != initial_item_refcount"); return NULL; } if (PyTuple_GetItem(t, 0) != item || PyTuple_GetItem(t, 0) != item) { PyErr_SetString(PyExc_SystemError, "GetItem: bogus item"); return NULL; } if (t->ob_refcnt != 1) { PyErr_SetString(PyExc_SystemError, "GetItem: t refcnt != 1"); return NULL; } if (item->ob_refcnt != initial_item_refcount) { PyErr_SetString(PyExc_SystemError, "GetItem: item refcnt != initial_item_refcount"); return NULL; } return t; """), ]) x = module.run() assert x == ((),) try: test_refcounts() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 168, in <module> test_refcounts() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_refcounts module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestTuple.test_refcounts_more _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59243538>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcounts_more'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_refcounts_more'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcounts_more'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_refcounts_more'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcounts_more'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_refcounts_more'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcounts_more'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd798615b0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ounts_more'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5048c020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5048c020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ounts_more'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_refcounts_more'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_refcounts_more'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_refcounts_more'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_refcounts_more at 0x00007fdd513cd2e0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestTuple.w_compile_module of <pypy.module.cpyext.test.test_tupleobject.AppTestTup...Tuple.w_import_extension of <pypy.module.cpyext.test.test_tupleobject.AppTestTuple object at 0x00007fdd58b9e138>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd58b9e1a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 146, in <module> E test_refcounts_more() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_refcounts_more E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_refcounts_more(): module = self.import_extension('foo', [ ("run", "METH_NOARGS", """ Py_ssize_t prev; PyObject *t = PyTuple_New(1); prev = Py_True->ob_refcnt; Py_INCREF(Py_True); PyTuple_SetItem(t, 0, Py_True); if (Py_True->ob_refcnt != prev + 1) { PyErr_SetString(PyExc_SystemError, "SetItem: Py_True refcnt != prev + 1"); return NULL; } Py_DECREF(t); if (Py_True->ob_refcnt != prev) { PyErr_SetString(PyExc_SystemError, "after: Py_True refcnt != prev"); return NULL; } Py_INCREF(Py_None); return Py_None; """), ]) module.run() try: test_refcounts_more() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 146, in <module> test_refcounts_more() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_refcounts_more module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________________ AppTestTuple.test_tuple_subclass _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07dbc8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tuple_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_tuple_subclass'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tuple_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_tuple_subclass'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tuple_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_tuple_subclass'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tuple_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac1eb88> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...e_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a0da020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a0da020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...e_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_tuple_subclass'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_tuple_subclass'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_tuple_subclass'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_tuple_subclass at 0x00007fdd513cd358> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestTuple.w_compile_module of <pypy.module.cpyext.test.test_tupleobject.AppTestTup...Tuple.w_import_extension of <pypy.module.cpyext.test.test_tupleobject.AppTestTuple object at 0x00007fdd7b1aa3d8>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7b1aa480> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> E test_tuple_subclass() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_tuple_subclass E module = self.import_module(name='foo') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_tuple_subclass(): module = self.import_module(name='foo') a = module.TupleLike(range(100, 400, 100)) assert module.is_TupleLike(a) == 1 assert isinstance(a, tuple) assert issubclass(type(a), tuple) assert list(a) == list(range(100, 400, 100)) assert list(a) == list(range(100, 400, 100)) assert list(a) == list(range(100, 400, 100)) try: test_tuple_subclass() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 130, in <module> test_tuple_subclass() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_tuple_subclass module = self.import_module(name='foo') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' __________________________ AppTestTuple.test_setitem ___________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59243538>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_setitem'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_setitem'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_setitem'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_setitem'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_setitem'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_setitem'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_setitem'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd50d109f8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_setitem'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5138c2e0> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5138c2e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...st_setitem'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_setitem'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_setitem'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_setitem'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_setitem at 0x00007fdd513cd3d0> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestTuple.w_compile_module of <pypy.module.cpyext.test.test_tupleobject.AppTestTup...Tuple.w_import_extension of <pypy.module.cpyext.test.test_tupleobject.AppTestTuple object at 0x00007fdd69174170>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd691741e0> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 163, in <module> E test_setitem() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_setitem E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_setitem(): module = self.import_extension('foo', [ ("set_after_use", "METH_O", """ PyObject *t2, *tuple = PyTuple_New(1); PyObject * one = PyLong_FromLong(1); int res; Py_INCREF(one); res = PyTuple_SetItem(tuple, 0, one); if (res != 0) { Py_DECREF(one); Py_DECREF(tuple); return NULL; } Py_INCREF(args); res = PyTuple_SetItem(tuple, 0, args); if (res != 0) { Py_DECREF(tuple); return NULL; } /* Do something that uses the tuple, but does not incref */ t2 = PyTuple_GetSlice(tuple, 0, 1); Py_DECREF(t2); res = PyTuple_SetItem(tuple, 0, one); if (res != 0) { Py_DECREF(tuple); return NULL; } Py_DECREF(tuple); Py_INCREF(Py_None); return Py_None; """), ]) import sys s = 'abc' if '__pypy__' in sys.builtin_module_names: raises(SystemError, module.set_after_use, s) else: module.set_after_use(s) try: test_setitem() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 163, in <module> test_setitem() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_setitem module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _________________________ AppTestTuple.test_mp_length __________________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_mp_length'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_mp_length'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_mp_length'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_mp_length'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_mp_length'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_mp_length'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_mp_length'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a64c188> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._mp_length'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a0b4060> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a0b4060> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i..._mp_length'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_mp_length'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_mp_length'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_mp_length'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_mp_length at 0x00007fdd513cd448> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'compile_module': <bound method AppTestTuple.w_compile_module of <pypy.module.cpyext.test.test_tupleobject.AppTestTup...Tuple.w_import_extension of <pypy.module.cpyext.test.test_tupleobject.AppTestTuple object at 0x00007fdd7ae362c0>>, ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd7ae36330> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 160, in <module> E test_mp_length() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 124, in test_mp_length E module = self.import_extension('foo', [ E ^^^^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_mp_length(): # issue 2968: creating a subclass of tuple in C led to recursion # since the default tp_new needs to build a w_obj, but that needs # to call space.len_w, which needs to call tp_new. module = self.import_extension('foo', [ ("get_size", "METH_NOARGS", """ return (PyObject*)&THPSizeType; """), ], prologue=''' #include "Python.h" struct THPSize { PyTupleObject tuple; } THPSize; static PyMappingMethods THPSize_as_mapping = { 0, //PyTuple_Type.tp_as_mapping->mp_length, 0, 0 }; PyTypeObject THPSizeType = { PyVarObject_HEAD_INIT(0, 0) "torch.Size", /* tp_name */ sizeof(THPSize), /* tp_basicsize */ }; ''' , more_init = ''' THPSize_as_mapping.mp_length = PyTuple_Type.tp_as_mapping->mp_length; THPSizeType.tp_base = &PyTuple_Type; THPSizeType.tp_flags = Py_TPFLAGS_DEFAULT; THPSizeType.tp_as_mapping = &THPSize_as_mapping; THPSizeType.tp_new = PyTuple_Type.tp_new; if (PyType_Ready(&THPSizeType) < 0) INITERROR; ''') SZ = module.get_size() s = SZ((1, 2, 3)) assert len(s) == 3 assert len(s) == 3 try: test_mp_length() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 160, in <module> test_mp_length() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 124, in test_mp_length module = self.import_extension('foo', [ ^^^^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 94, in w_import_extension sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ______________________ AppTestTypeObject.test_typeobject _______________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd59243628>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd797ce138> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...typeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5048a020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd5048a020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...typeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_typeobject'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_typeobject'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_typeobject at 0x00007fdd5955f9e8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'_check_uses_shortcut': <pypy.interpreter.gateway.interp2app object at 0x00007fdd6876d9b8>, 'compile_module': <bound ...7fdd6876d8a0>>, 'here': u'/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test', ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd79caca30> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> E test_typeobject() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_typeobject E module = self.import_module(name='foo') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_typeobject(): import sys module = self.import_module(name='foo') assert 'foo' in sys.modules assert "copy" in dir(module.fooType) obj = module.new() #print(obj.foo) assert obj.foo == 42 #print("Obj has type", type(obj)) assert type(obj) is module.fooType #print("type of obj has type", type(type(obj))) #print("type of type of obj has type", type(type(type(obj)))) assert module.fooType.__doc__ == "foo is for testing." try: test_typeobject() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 134, in <module> test_typeobject() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 122, in test_typeobject module = self.import_module(name='foo') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _____________ AppTestTypeObject.test_typeobject_method_descriptor ______________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd50c9a020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_method_descriptor'>,...icall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject_method_descriptor'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_method_descriptor'>,...icall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject_method_descriptor'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_method_descriptor'>,...icall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject_method_descriptor'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_method_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6ac1f038> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50564c20> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd50564c20> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_method_descriptor'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_typeobject_method_descriptor'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_typeobject_method_descriptor'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_typeobject_method_descriptor at 0x00007fdd5955fa60> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'_check_uses_shortcut': <pypy.interpreter.gateway.interp2app object at 0x00007fdd6876d9b8>, 'compile_module': <bound ...7fdd504142f8>>, 'here': u'/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test', ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd50414330> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> E test_typeobject_method_descriptor() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_typeobject_method_descriptor E module = self.import_module(name='foo') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_typeobject_method_descriptor(): module = self.import_module(name='foo') obj = module.new() obj2 = obj.copy() assert module.new().name == "Foo Example" c = module.fooType.copy assert not "im_func" in dir(module.fooType.copy) assert module.fooType.copy.__objclass__ is module.fooType assert "copy" in repr(module.fooType.copy) assert repr(module.fooType) == "<class 'foo.foo'>" assert repr(obj2) == "<Foo>" assert repr(module.fooType.__call__) == "<slot wrapper '__call__' of 'foo.foo' objects>" assert obj2(foo=1, bar=2) == dict(foo=1, bar=2) assert module.fooType.__repr__.__text_signature__ == '($self, /)' print(obj.foo) assert obj.foo == 42 assert obj.int_member == obj.foo try: test_typeobject_method_descriptor() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 139, in <module> test_typeobject_method_descriptor() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_typeobject_method_descriptor module = self.import_module(name='foo') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' ________________ AppTestTypeObject.test_typeobject_data_member _________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd7b07dbc8>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_data_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject_data_member'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_data_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject_data_member'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_data_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject_data_member'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_data_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd798617e0> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ata_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a9d2020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd6a9d2020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ata_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_data_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_typeobject_data_member'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_typeobject_data_member'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_typeobject_data_member at 0x00007fdd5955fad8> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'_check_uses_shortcut': <pypy.interpreter.gateway.interp2app object at 0x00007fdd6876d9b8>, 'compile_module': <bound ...7fdd508ee250>>, 'here': u'/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test', ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd508ee288> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> E test_typeobject_data_member() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_typeobject_data_member E module = self.import_module(name='foo') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_typeobject_data_member(): module = self.import_module(name='foo') obj = module.new() obj.int_member = 23 assert obj.int_member == 23 obj.int_member = 42 raises(TypeError, "obj.int_member = 'not a number'") raises(TypeError, "del obj.int_member") raises(AttributeError, "obj.int_member_readonly = 42") exc = raises(AttributeError, "del obj.int_member_readonly") assert "readonly" in str(exc.value) raises(SystemError, "obj.broken_member") raises(SystemError, "obj.broken_member = 42") assert module.fooType.broken_member.__doc__ is None assert module.fooType.object_member.__doc__ == "A Python object." assert str(type(module.fooType.int_member)) == "<class 'member_descriptor'>" try: test_typeobject_data_member() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 137, in <module> test_typeobject_data_member() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_typeobject_data_member module = self.import_module(name='foo') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________ AppTestTypeObject.test_typeobject_object_member ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd50c9a020>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_object_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject_object_member'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_object_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject_object_member'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_object_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject_object_member'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_object_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd6a64c188> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ect_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd513e6120> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd513e6120> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ect_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_object_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_typeobject_object_member'> def pytest_runtest_call(item): try: > item.runtest() ../_pytest/runner.py:91: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <AppTestMethod 'test_typeobject_object_member'> def runtest(self): target = self.obj src = extract_docstring_if_empty_function(target.im_func) space = target.im_self.space if self.config.option.runappdirect: appexec_definitions = self.parent.obj.__dict__ spaceconfig = getattr(self.parent.obj, 'spaceconfig', None) usemodules = spaceconfig.get('usemodules') if spaceconfig else None return run_with_python(self.config.option.python, src, usemodules, > **appexec_definitions) tool/pytest/apptest.py:327: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ python_ = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/goal/pypy3.12-c' target_ = <function test_typeobject_object_member at 0x00007fdd5955fb50> usemodules = ['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', ...] definitions = {'_check_uses_shortcut': <pypy.interpreter.gateway.interp2app object at 0x00007fdd6876d9b8>, 'compile_module': <bound ...7fdd50502758>>, 'here': u'/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test', ...} defs = ['def w_compile_module(self, name,\n source_files=None, source_strings=None):\n from extbuild import get_sys...e=prologue,\n include_dirs=include_dirs, more_init=more_init,\n PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN)', ...] symbol = 'udir', value = u'/tmp/buildbot-x86_64/usession-py3.12-2937' code = <py._code.code.Code object at 0x00007fdd505028a8> def run_with_python(python_, target_, usemodules, **definitions): if python_ is None: py.test.skip("Cannot find the default python3 interpreter to run with -A") defs = [] for symbol, value in sorted(definitions.items()): if isinstance(value, tuple) and isinstance(value[0], py.code.Source): code, args = value defs.append(str(code)) arg_repr = [] for arg in args: if isinstance(arg, types.FunctionType): arg_repr.append(arg.__name__) elif isinstance(arg, types.MethodType): arg_repr.append(arg.__name__) else: arg_repr.append(py3k_repr(arg)) args = ', '.join(arg_repr) defs.append("self.%s = anonymous(%s)\n" % (symbol, args)) elif isinstance(value, types.MethodType): # "def w_method(self)" code = py.code.Code(value) defs.append(str(code.source())) defs.append("type(self).%s = %s\n" % (symbol, value.__name__)) elif isinstance(value, types.ModuleType): name = value.__name__ defs.append("import %s; self.%s = %s\n" % (name, symbol, name)) elif isinstance(value, (str, unicode, int, long, float, list, tuple, dict)) or value is None: defs.append("self.%s = %s\n" % (symbol, py3k_repr(value))) check_usemodules = '' if usemodules: usemodules = [_rename_module(name) for name in usemodules] check_usemodules = """\ missing = set(%r).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing""" % usemodules source = list(py.code.Source(target_)) while source[0].startswith(('@py.test.mark.', '@pytest.mark.')): source.pop(0) source = source[1:] pyfile = udir.join('src.py') if isinstance(target_, str): # Special case of a docstring; the function name is the first word. target_name = target_.split('(', 1)[0] else: target_name = target_.__name__ with pyfile.open('w') as f: f.write(helpers % (pypyroot, check_usemodules)) f.write('\n'.join(defs)) f.write('def %s():\n' % target_name) f.write('\n'.join(source)) f.write("\ntry:\n %s()\n" % target_name) f.write('finally:\n print("===aefwuiheawiu===")') helper_dir = os.path.join(pypydir, 'tool', 'cpyext') env = os.environ.copy() env['PYTHONPATH'] = helper_dir res, stdout, stderr = run_subprocess( python_, [str(pyfile)], env=env) print pyfile.read() print "from", str(pyfile) print >> sys.stdout, stdout print >> sys.stderr, stderr if res == 81: py.test.skip('%r was not compiled w/ required usemodules: %r' % (python_, usemodules)) elif res != 0: raise AssertionError( > "Subprocess failed with exit code %s:\n%s" % (res, stderr)) E AssertionError: Subprocess failed with exit code 1: E Traceback (most recent call last): E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> E test_typeobject_object_member() E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_typeobject_object_member E module = self.import_module(name='foo') E ^^^^^^^^^^^^^ E File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module E sys_info = get_sys_info_app(self.udir) E ^^^^^^^^^^^^^^^^^^^^^^^^^^^ E File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app E from distutils.sysconfig import get_python_inc E ModuleNotFoundError: No module named 'distutils' tool/pytest/apptest.py:239: AssertionError ----------------------------- Captured stdout call ----------------------------- # -*- encoding: utf-8 -*- if 1: import sys sys.path.append('/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build') missing = set(['cpyext', '_thread', '_struct', 'array', 'itertools', 'time', 'binascii', 'mmap', '_signal', '_cffi_backend']).difference(sys.builtin_module_names) if missing: if not hasattr(sys, 'pypy_version_info'): # They may be extension modules on CPython name = None for name in missing.copy(): if name in ['cpyext', '_cffi_backend', '_rawffi']: missing.remove(name) continue try: __import__(name) except ImportError: pass else: missing.remove(name) del name if missing: sys.exit(81) del missing def skip(message): print(message) raise SystemExit(0) __builtins__.skip = skip __builtins__.py3k_skip = skip class ExceptionWrapper: pass def raises(exc, *args, **kwargs): if not args: return RaisesContext(exc) func = args[0] args = args[1:] import os try: if isinstance(func, str): if func.startswith((' ', os.linesep, '\n')): # it's probably an indented block, so we prefix if True: # to avoid SyntaxError func = "if True:\n" + func frame = sys._getframe(1) exec(func, frame.f_globals, frame.f_locals) else: func(*args, **kwargs) except exc as e: res = ExceptionWrapper() res.value = e res.traceback = e.__traceback__ return res else: raise AssertionError("DID NOT RAISE") class RaisesContext(object): def __init__(self, expected_exception): self.expected_exception = expected_exception self.excinfo = None def __enter__(self): return self def __exit__(self, *tp): __tracebackhide__ = True if tp[0] is None: raise AssertionError("DID NOT RAISE") self.value = tp[1] return issubclass(tp[0], self.expected_exception) __builtins__.raises = raises class Test: pass self = Test() def w_compile_module(self, name, source_files=None, source_strings=None): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.compile_extension_module(name, source_files=source_files, source_strings=source_strings) type(self).compile_module = w_compile_module def w_debug_collect(self): import gc gc.collect() gc.collect() gc.collect() type(self).debug_collect = w_debug_collect self.here = '/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/module/cpyext/test' def w_import_extension(self, modname, functions, prologue="", include_dirs=None, more_init="", PY_SSIZE_T_CLEAN=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_extension( modname, functions, prologue=prologue, include_dirs=include_dirs, more_init=more_init, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_extension = w_import_extension def w_import_module(self, name, init=None, body='', filename=None, include_dirs=None, PY_SSIZE_T_CLEAN=False, use_imp=False): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.import_module( name, init=init, body=body, filename=filename, include_dirs=include_dirs, PY_SSIZE_T_CLEAN=PY_SSIZE_T_CLEAN) type(self).import_module = w_import_module def w_load_module(self, mod, name): from extbuild import get_sys_info_app sys_info = get_sys_info_app(self.udir) return sys_info.load_module(mod, name) type(self).load_module = w_load_module self.runappdirect = True self.udir = '/tmp/buildbot-x86_64/usession-py3.12-2937' def test_typeobject_object_member(): module = self.import_module(name='foo') obj = module.new() assert obj.object_member is None obj.object_member = "hello" assert obj.object_member == "hello" del obj.object_member # Make sure a second call does not fail del obj.object_member assert obj.object_member is None raises(AttributeError, "obj.object_member_ex") obj.object_member_ex = None assert obj.object_member_ex is None obj.object_member_ex = 42 assert obj.object_member_ex == 42 del obj.object_member_ex raises(AttributeError, "del obj.object_member_ex") obj.set_foo = 32 assert obj.foo == 32 try: test_typeobject_object_member() finally: print("===aefwuiheawiu===") from /tmp/buildbot-x86_64/usession-py3.12-2937/src.py ===aefwuiheawiu=== ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 141, in <module> test_typeobject_object_member() File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 121, in test_typeobject_object_member module = self.import_module(name='foo') ^^^^^^^^^^^^^ File "/tmp/buildbot-x86_64/usession-py3.12-2937/src.py", line 104, in w_import_module sys_info = get_sys_info_app(self.udir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/matti/build-worker-x86_64/pypy-c-jit-macos-x86-64/build/pypy/tool/cpyext/extbuild.py", line 258, in get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' _______________ AppTestTypeObject.test_typeobject_string_member ________________ self = <CallInfo when='call' exception: Subprocess failed with exit code 1: Traceback (most recent call last): File "/tmp/b... get_sys_info_app from distutils.sysconfig import get_python_inc ModuleNotFoundError: No module named 'distutils' > func = <function <lambda> at 0x00007fdd6936c908>, when = 'call' def __init__(self, func, when): #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" self.when = when self.start = time() try: > self.result = func() ../_pytest/runner.py:150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > return CallInfo(lambda: ihook(item=item, **kwds), when=when) ../_pytest/runner.py:138: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_HookCaller 'pytest_runtest_call'> kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_string_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject_string_member'>} def __call__(self, **kwargs): assert not self.is_historic() > return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs) ../_pytest/vendored_packages/pluggy.py:724: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.config.PytestPluginManager object at 0x00007fdd788da608> hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_string_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject_string_member'>} def _hookexec(self, hook, methods, kwargs): # called from all hookcaller instances. # enable_tracing will set its own wrapping function at self._inner_hookexec > return self._inner_hookexec(hook, methods, kwargs) ../_pytest/vendored_packages/pluggy.py:338: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hook = <_HookCaller 'pytest_runtest_call'>, methods = [] kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_string_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_typeobject_string_member'>} self._inner_hookexec = lambda hook, methods, kwargs: \ > _MultiCall(methods, kwargs, hook.spec_opts).execute() ../_pytest/vendored_packages/pluggy.py:333: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_string_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: > return _wrapped_call(hook_impl.function(*args), self.execute) ../_pytest/vendored_packages/pluggy.py:595: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wrap_controller = <generator object pytest_runtest_call at 0x00007fdd797c82c8> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ing_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def _wrapped_call(wrap_controller, func): """ Wrap calling to a function with a generator which needs to yield exactly once. The yield point will trigger calling the wrapped function and return its _CallOutcome to the yield point. The generator then needs to finish (raise StopIteration) in order for the wrapped call to complete. """ try: next(wrap_controller) # first yield except StopIteration: _raise_wrapfail(wrap_controller, "did not yield") call_outcome = _CallOutcome(func) try: wrap_controller.send(call_outcome) _raise_wrapfail(wrap_controller, "has second yield") except StopIteration: pass > return call_outcome.get_result() ../_pytest/vendored_packages/pluggy.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd516cc020> def get_result(self): if self.excinfo is None: return self.result else: ex = self.excinfo if _py3: raise ex[1].with_traceback(ex[2]) > _reraise(*ex) # noqa ../_pytest/vendored_packages/pluggy.py:279: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x00007fdd516cc020> func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...ing_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>> def __init__(self, func): try: > self.result = func() ../_pytest/vendored_packages/pluggy.py:264: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_typeobject_string_member'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}> def execute(self): all_kwargs = self.kwargs self.results = results = [] firstresult = self.specopts.get("firstresult") while self.hook_impls: hook_impl = self.hook_impls.pop() args = [all_kwargs[argname] for argname in hook_impl.argnames] if hook_impl.hookwrapper: return _wrapped_call(hook_impl.function(*args), self.execute) > res = hook_impl.function(*args) ../_pytest/vendored_packages/pluggy.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ item = <AppTestMethod 'test_typeobject_string_member'> def pytest_runtest_call(item): Output exceeded 6164480 bytes, remaining output has been truncated program finished with exit code 1 elapsedTime=832.461082