From 44979522af5fb9dfa64afd0310c4eb6b62ae477f Mon Sep 17 00:00:00 2001 From: Sergey Shepelev Date: Fri, 29 Jan 2021 13:26:10 +0300 Subject: [PATCH] patcher: built-in open() did not accept kwargs https://github.com/eventlet/eventlet/issues/683 --- eventlet/green/builtin.py | 4 ++-- tests/isolated/patcher_open_kwargs.py | 10 ++++++++++ tests/patcher_test.py | 4 ++++ 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 tests/isolated/patcher_open_kwargs.py diff --git a/eventlet/green/builtin.py b/eventlet/green/builtin.py index 71de1dce5c..8d0603a334 100644 --- a/eventlet/green/builtin.py +++ b/eventlet/green/builtin.py @@ -38,9 +38,9 @@ def __init__(self, *args, **kwargs): __opening = False -def open(*args): +def open(*args, **kwargs): global __opening - result = __original_open(*args) + result = __original_open(*args, **kwargs) if not __opening: # This is incredibly ugly. 'open' is used under the hood by # the import process. So, ensure we don't wind up in an diff --git a/tests/isolated/patcher_open_kwargs.py b/tests/isolated/patcher_open_kwargs.py new file mode 100644 index 0000000000..be88ef9cb9 --- /dev/null +++ b/tests/isolated/patcher_open_kwargs.py @@ -0,0 +1,10 @@ +__test__ = False + +if __name__ == "__main__": + import eventlet + eventlet.monkey_patch(builtins=True, os=True) + + with open(__file__, mode="rt", buffering=16): + pass + + print("pass") diff --git a/tests/patcher_test.py b/tests/patcher_test.py index 6ff6e5a9be..dbf6e1c71f 100644 --- a/tests/patcher_test.py +++ b/tests/patcher_test.py @@ -523,3 +523,7 @@ def test_fork_after_monkey_patch(): def test_builtin(): tests.run_isolated('patcher_builtin.py') + + +def test_open_kwargs(): + tests.run_isolated("patcher_open_kwargs.py")