Skip to content

Commit be244b5

Browse files
authored
Merge pull request #7005 from radarhere/unclosed_file
2 parents 258cb8d + f9cbc2e commit be244b5

File tree

9 files changed

+42
-2
lines changed

9 files changed

+42
-2
lines changed

Tests/test_file_bufrstub.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def open(self, im):
5656

5757
def load(self, im):
5858
self.loaded = True
59+
im.fp.close()
5960
return Image.new("RGB", (1, 1))
6061

6162
def save(self, im, fp, filename):

Tests/test_file_fits.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ def open(self, im):
6060

6161
def load(self, im):
6262
self.loaded = True
63+
im.fp.close()
6364
return Image.new("RGB", (1, 1))
6465

6566
handler = Handler()

Tests/test_file_fpx.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@ def test_sanity():
1818
assert_image_equal_tofile(im, "Tests/images/input_bw_one_band.png")
1919

2020

21+
def test_close():
22+
with Image.open("Tests/images/input_bw_one_band.fpx") as im:
23+
pass
24+
assert im.ole.fp.closed
25+
26+
im = Image.open("Tests/images/input_bw_one_band.fpx")
27+
im.close()
28+
assert im.ole.fp.closed
29+
30+
2131
def test_invalid_file():
2232
# Test an invalid OLE file
2333
invalid_file = "Tests/images/flower.jpg"

Tests/test_file_gribstub.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def open(self, im):
5656

5757
def load(self, im):
5858
self.loaded = True
59+
im.fp.close()
5960
return Image.new("RGB", (1, 1))
6061

6162
def save(self, im, fp, filename):

Tests/test_file_hdf5stub.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ def open(self, im):
5757

5858
def load(self, im):
5959
self.loaded = True
60+
im.fp.close()
6061
return Image.new("RGB", (1, 1))
6162

6263
def save(self, im, fp, filename):

Tests/test_file_mic.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,16 @@ def test_seek():
5151
assert im.tell() == 0
5252

5353

54+
def test_close():
55+
with Image.open(TEST_FILE) as im:
56+
pass
57+
assert im.ole.fp.closed
58+
59+
im = Image.open(TEST_FILE)
60+
im.close()
61+
assert im.ole.fp.closed
62+
63+
5464
def test_invalid_file():
5565
# Test an invalid OLE file
5666
invalid_file = "Tests/images/flower.jpg"

Tests/test_imageshow.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ def test_show_without_viewers():
5555
viewers = ImageShow._viewers
5656
ImageShow._viewers = []
5757

58-
im = hopper()
59-
assert not ImageShow.show(im)
58+
with hopper() as im:
59+
assert not ImageShow.show(im)
6060

6161
ImageShow._viewers = viewers
6262

src/PIL/FpxImagePlugin.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,14 @@ def load(self):
235235

236236
return ImageFile.ImageFile.load(self)
237237

238+
def close(self):
239+
self.ole.close()
240+
super().close()
241+
242+
def __exit__(self, *args):
243+
self.ole.close()
244+
super().__exit__()
245+
238246

239247
#
240248
# --------------------------------------------------------------------

src/PIL/MicImagePlugin.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,14 @@ def seek(self, frame):
8989
def tell(self):
9090
return self.frame
9191

92+
def close(self):
93+
self.ole.close()
94+
super().close()
95+
96+
def __exit__(self, *args):
97+
self.ole.close()
98+
super().__exit__()
99+
92100

93101
#
94102
# --------------------------------------------------------------------

0 commit comments

Comments
 (0)