Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 12 additions & 6 deletions src/RequestsLibrary/RequestsKeywords.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,25 @@ def _close_file_descriptors(files, data):
"""
Helper method that closes any open file descriptors.
"""

if is_list_or_tuple(files):
files_descriptor_to_close = filter(
is_file_descriptor, [file[1][1] for file in files] + [data]
)
else:
files_descriptor_to_close = filter(
is_file_descriptor, list(files.values()) + [data]
)

files_descriptor_to_close = []
for value in (files or {}).values():
if is_file_descriptor(value):
files_descriptor_to_close.append(value)
elif is_list_or_tuple(value) and len(value) >= 2 and is_file_descriptor(value[1]):
files_descriptor_to_close.append(value[1])

if is_file_descriptor(data):
files_descriptor_to_close.append(data)

for file_descriptor in files_descriptor_to_close:
file_descriptor.close()

@staticmethod
def _merge_url(session, uri):
"""
Expand Down
12 changes: 12 additions & 0 deletions utests/test_RequestsOnSessionKeywords.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,18 @@ def test_common_request_files_descriptor_closing_when_passed_as_files_param():
assert f2.closed is True


def test_common_request_files_descriptor_closing_when_passed_as_file_tuple():
session, m_common_request = build_mocked_session_common_request()
with open(os.path.join(SCRIPT_DIR, '../atests/randombytes.bin'), 'rb') as f:
m_common_request(
'get',
session,
'http://mocking.rules',
files={'randombytes': ('randombytes.bin', f)},
)
assert f.closed is True


def test_common_request_verify_override_true():
session, m_common_request = build_mocked_session_common_request(verify=False)
m_common_request('get', session, '/', verify=True)
Expand Down