Catch AttributeError in utils.super_len (#5239)

* Catch AttributeError in utils.super_len

This allows it to handle files obtained via `Tarfile.extractfile()`.
This commit is contained in:
David Hotham
2021-11-28 20:03:31 +00:00
committed by Nate Prewitt
parent e77dd8de6e
commit 2d2447e210
3 changed files with 22 additions and 3 deletions
+13
View File
@@ -4,6 +4,7 @@ import os
import copy
import filecmp
from io import BytesIO
import tarfile
import zipfile
from collections import deque
@@ -86,6 +87,18 @@ class TestSuperLen:
assert super_len(fd) == 4
assert len(recwarn) == warnings_num
def test_tarfile_member(self, tmpdir):
file_obj = tmpdir.join('test.txt')
file_obj.write('Test')
tar_obj = str(tmpdir.join('test.tar'))
with tarfile.open(tar_obj, 'w') as tar:
tar.add(str(file_obj), arcname='test.txt')
with tarfile.open(tar_obj) as tar:
member = tar.extractfile('test.txt')
assert super_len(member) == 4
def test_super_len_with__len__(self):
foo = [1,2,3,4]
len_foo = super_len(foo)