pypy/module/fcntl/test/test_fcntl.py::AppTestFcntl::()::test_fcntl
self = <CallInfo when='call' exception: [Errno 11] Resource temporarily unavailable>
func = <function <lambda> at 0x00000000273786b0>, when = 'call'
def __init__(self, func, when):
#: context of invocation: one of "setup", "call",
#: "teardown", "memocollect"
self.when = when
self.start = time()
try:
> self.result = func()
../_pytest/runner.py:150:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> return CallInfo(lambda: ihook(item=item, **kwds), when=when)
../_pytest/runner.py:138:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <_HookCaller 'pytest_runtest_call'>
kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fcntl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fcntl'>}
def __call__(self, **kwargs):
assert not self.is_historic()
> return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
../_pytest/vendored_packages/pluggy.py:724:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <_pytest.config.PytestPluginManager object at 0x0000fffdecb8c2f8>
hook = <_HookCaller 'pytest_runtest_call'>, methods = []
kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fcntl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fcntl'>}
def _hookexec(self, hook, methods, kwargs):
# called from all hookcaller instances.
# enable_tracing will set its own wrapping function at self._inner_hookexec
> return self._inner_hookexec(hook, methods, kwargs)
../_pytest/vendored_packages/pluggy.py:338:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
hook = <_HookCaller 'pytest_runtest_call'>, methods = []
kwargs = {'__multicall__': <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fcntl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>, 'item': <AppTestMethod 'test_fcntl'>}
self._inner_hookexec = lambda hook, methods, kwargs: \
> _MultiCall(methods, kwargs, hook.spec_opts).execute()
../_pytest/vendored_packages/pluggy.py:333:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fcntl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>
def execute(self):
all_kwargs = self.kwargs
self.results = results = []
firstresult = self.specopts.get("firstresult")
while self.hook_impls:
hook_impl = self.hook_impls.pop()
args = [all_kwargs[argname] for argname in hook_impl.argnames]
if hook_impl.hookwrapper:
> return _wrapped_call(hook_impl.function(*args), self.execute)
../_pytest/vendored_packages/pluggy.py:595:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
wrap_controller = <generator object pytest_runtest_call at 0x0000fffdecab00c0>
func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_fcntl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>>
def _wrapped_call(wrap_controller, func):
""" Wrap calling to a function with a generator which needs to yield
exactly once. The yield point will trigger calling the wrapped function
and return its _CallOutcome to the yield point. The generator then needs
to finish (raise StopIteration) in order for the wrapped call to complete.
"""
try:
next(wrap_controller) # first yield
except StopIteration:
_raise_wrapfail(wrap_controller, "did not yield")
call_outcome = _CallOutcome(func)
try:
wrap_controller.send(call_outcome)
_raise_wrapfail(wrap_controller, "has second yield")
except StopIteration:
pass
> return call_outcome.get_result()
../_pytest/vendored_packages/pluggy.py:253:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000000002734ba20>
def get_result(self):
if self.excinfo is None:
return self.result
else:
ex = self.excinfo
if _py3:
raise ex[1].with_traceback(ex[2])
> _reraise(*ex) # noqa
../_pytest/vendored_packages/pluggy.py:279:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <_pytest.vendored_packages.pluggy._CallOutcome instance at 0x000000002734ba20>
func = <bound method _MultiCall.execute of <_MultiCall 0 results, 0 meths, kwargs={'i...test_fcntl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>>
def __init__(self, func):
try:
> self.result = func()
../_pytest/vendored_packages/pluggy.py:264:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <_MultiCall 0 results, 0 meths, kwargs={'item': <AppTestMethod 'test_fcntl'>, '__multicall__': <_MultiCall 0 results, 0 meths, kwargs={...}>}>
def execute(self):
all_kwargs = self.kwargs
self.results = results = []
firstresult = self.specopts.get("firstresult")
while self.hook_impls:
hook_impl = self.hook_impls.pop()
args = [all_kwargs[argname] for argname in hook_impl.argnames]
if hook_impl.hookwrapper:
return _wrapped_call(hook_impl.function(*args), self.execute)
> res = hook_impl.function(*args)
../_pytest/vendored_packages/pluggy.py:596:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
item = <AppTestMethod 'test_fcntl'>
def pytest_runtest_call(item):
try:
> item.runtest()
../_pytest/runner.py:91:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <AppTestMethod 'test_fcntl'>
def runtest(self):
target = self.obj
if self.config.option.runappdirect:
> return target()
tool/pytest/apptest.py:84:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <test_fcntl.AppTestFcntl instance at 0x000000002734ade0>
def test_fcntl(self):
import fcntl
import os
import sys
import struct
class F:
def __init__(self, fn):
self.fn = fn
def fileno(self):
return self.fn
f = open(self.tmp + "b", "w+")
fcntl.fcntl(f, 1, 0)
fcntl.fcntl(f, 1)
fcntl.fcntl(F(long(f.fileno())), 1)
raises(TypeError, fcntl.fcntl, "foo")
raises(TypeError, fcntl.fcntl, f, "foo")
exc = raises(TypeError, fcntl.fcntl, F("foo"), 1)
assert str(exc.value) == 'fileno() returned a non-integer'
exc = raises(ValueError, fcntl.fcntl, 2147483647 + 1, 1, 0)
assert str(exc.value) == 'file descriptor cannot be a negative integer (-1)'
exc = raises(ValueError, fcntl.fcntl, F(2147483647 + 1), 1, 0)
assert str(exc.value) == 'file descriptor cannot be a negative integer (-1)'
exc = raises(ValueError, fcntl.fcntl, -2147483648 - 1, 1, 0)
assert str(exc.value) == 'file descriptor cannot be a negative integer (-1)'
exc = raises(ValueError, fcntl.fcntl, F(-2147483648 - 1), 1, 0)
assert str(exc.value) == 'file descriptor cannot be a negative integer (-1)'
raises(ValueError, fcntl.fcntl, -1, 1, 0)
raises(ValueError, fcntl.fcntl, F(-1), 1, 0)
raises(ValueError, fcntl.fcntl, F(long(-1)), 1, 0)
assert fcntl.fcntl(f, 1, 0) == 0
assert fcntl.fcntl(f, 2, "foo") == "foo"
assert fcntl.fcntl(f, 2, buffer("foo")) == "foo"
exc = raises(TypeError, fcntl.fcntl, f, 2, memoryview("foo"))
assert 'integer' in str(exc.value)
try:
os.O_LARGEFILE
except AttributeError:
start_len = "ll"
else:
start_len = "qq"
if any(substring in sys.platform.lower()
for substring in ('netbsd', 'darwin', 'freebsd', 'bsdos',
'openbsd')):
if struct.calcsize('l') == 8:
off_t = 'l'
pid_t = 'i'
else:
off_t = 'lxxxx'
pid_t = 'l'
format = "%s%s%shh" % (off_t, off_t, pid_t)
lockdata = struct.pack(format, 0, 0, 0, fcntl.F_WRLCK, 0)
else:
format = "hh%shh" % start_len
lockdata = struct.pack(format, fcntl.F_WRLCK, 0, 0, 0, 0, 0)
rv = fcntl.fcntl(f.fileno(), fcntl.F_SETLKW, lockdata)
assert rv == lockdata
assert fcntl.fcntl(f, fcntl.F_SETLKW, lockdata) == lockdata
# test duplication of file descriptor
rv = fcntl.fcntl(f, fcntl.F_DUPFD)
assert rv > 2 # > (stdin, stdout, stderr) at least
assert fcntl.fcntl(f, fcntl.F_DUPFD) > rv
assert fcntl.fcntl(f, fcntl.F_DUPFD, 99) == 99
# test descriptor flags
assert fcntl.fcntl(f, fcntl.F_GETFD) == 0
fcntl.fcntl(f, fcntl.F_SETFD, 1)
assert fcntl.fcntl(f, fcntl.F_GETFD, fcntl.FD_CLOEXEC) == 1
# test status flags
assert fcntl.fcntl(f.fileno(), fcntl.F_SETFL, os.O_NONBLOCK) == 0
assert fcntl.fcntl(f.fileno(), fcntl.F_SETFL, os.O_NDELAY) == 0
assert fcntl.fcntl(f, fcntl.F_SETFL, os.O_NONBLOCK) == 0
assert fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) == 0
if "linux" in sys.platform:
# test managing signals
assert fcntl.fcntl(f, fcntl.F_GETOWN) == 0
fcntl.fcntl(f, fcntl.F_SETOWN, os.getpid())
assert fcntl.fcntl(f, fcntl.F_GETOWN) == os.getpid()
assert fcntl.fcntl(f, fcntl.F_GETSIG) == 0
fcntl.fcntl(f, fcntl.F_SETSIG, 20)
assert fcntl.fcntl(f, fcntl.F_GETSIG) == 20
# test leases
assert fcntl.fcntl(f, fcntl.F_GETLEASE) == fcntl.F_UNLCK
> fcntl.fcntl(f, fcntl.F_SETLEASE, fcntl.F_WRLCK)
E IOError: [Errno 11] Resource temporarily unavailable
module/fcntl/test/test_fcntl.py:114: IOError
builder: pypy-c-jit-linux-aarch64 build #2966+
test: pypy/module/fcntl/test/test_fcntl.py::AppTestFcntl::()::test_fcntl