From eb2d6560a4f81bb4b323b7baa79c259663201c84 Mon Sep 17 00:00:00 2001 From: Hugo Date: Mon, 17 Feb 2020 00:03:27 +0200 Subject: [PATCH] Replace unittest with pytest --- Tests/test_file_im.py | 129 ++++++++++++++++++++++-------------------- 1 file changed, 69 insertions(+), 60 deletions(-) diff --git a/Tests/test_file_im.py b/Tests/test_file_im.py index ec046020e..cfdb46097 100644 --- a/Tests/test_file_im.py +++ b/Tests/test_file_im.py @@ -1,89 +1,98 @@ -import unittest - import pytest from PIL import Image, ImImagePlugin -from .helper import PillowTestCase, assert_image_equal, hopper, is_pypy +from .helper import assert_image_equal, hopper, is_pypy # sample im TEST_IM = "Tests/images/hopper.im" -class TestFileIm(PillowTestCase): - def test_sanity(self): +def test_sanity(): + with Image.open(TEST_IM) as im: + im.load() + assert im.mode == "RGB" + assert im.size == (128, 128) + assert im.format == "IM" + + +@pytest.mark.skipif(is_pypy(), reason="Requires CPython") +def test_unclosed_file(): + def open(): + im = Image.open(TEST_IM) + im.load() + + pytest.warns(ResourceWarning, open) + + +def test_closed_file(): + def open(): + im = Image.open(TEST_IM) + im.load() + im.close() + + pytest.warns(None, open) + + +def test_context_manager(): + def open(): with Image.open(TEST_IM) as im: im.load() - self.assertEqual(im.mode, "RGB") - self.assertEqual(im.size, (128, 128)) - self.assertEqual(im.format, "IM") - @unittest.skipIf(is_pypy(), "Requires CPython") - def test_unclosed_file(self): - def open(): - im = Image.open(TEST_IM) - im.load() + pytest.warns(None, open) - pytest.warns(ResourceWarning, open) - def test_closed_file(self): - def open(): - im = Image.open(TEST_IM) - im.load() - im.close() +def test_tell(): + # Arrange + with Image.open(TEST_IM) as im: - pytest.warns(None, open) + # Act + frame = im.tell() - def test_context_manager(self): - def open(): - with Image.open(TEST_IM) as im: - im.load() + # Assert + assert frame == 0 - pytest.warns(None, open) - def test_tell(self): - # Arrange - with Image.open(TEST_IM) as im: +def test_n_frames(): + with Image.open(TEST_IM) as im: + assert im.n_frames == 1 + assert not im.is_animated - # Act - frame = im.tell() - # Assert - self.assertEqual(frame, 0) +def test_eoferror(): + with Image.open(TEST_IM) as im: + n_frames = im.n_frames - def test_n_frames(self): - with Image.open(TEST_IM) as im: - self.assertEqual(im.n_frames, 1) - self.assertFalse(im.is_animated) + # Test seeking past the last frame + with pytest.raises(EOFError): + im.seek(n_frames) + assert im.tell() < n_frames - def test_eoferror(self): - with Image.open(TEST_IM) as im: - n_frames = im.n_frames + # Test that seeking to the last frame does not raise an error + im.seek(n_frames - 1) - # Test seeking past the last frame - self.assertRaises(EOFError, im.seek, n_frames) - self.assertLess(im.tell(), n_frames) - # Test that seeking to the last frame does not raise an error - im.seek(n_frames - 1) +def test_roundtrip(tmp_path): + for mode in ["RGB", "P", "PA"]: + out = str(tmp_path / "temp.im") + im = hopper(mode) + im.save(out) + with Image.open(out) as reread: + assert_image_equal(reread, im) - def test_roundtrip(self): - for mode in ["RGB", "P", "PA"]: - out = self.tempfile("temp.im") - im = hopper(mode) - im.save(out) - with Image.open(out) as reread: - assert_image_equal(reread, im) +def test_save_unsupported_mode(tmp_path): + out = str(tmp_path / "temp.im") + im = hopper("HSV") + with pytest.raises(ValueError): + im.save(out) - def test_save_unsupported_mode(self): - out = self.tempfile("temp.im") - im = hopper("HSV") - self.assertRaises(ValueError, im.save, out) - def test_invalid_file(self): - invalid_file = "Tests/images/flower.jpg" +def test_invalid_file(): + invalid_file = "Tests/images/flower.jpg" - self.assertRaises(SyntaxError, ImImagePlugin.ImImageFile, invalid_file) + with pytest.raises(SyntaxError): + ImImagePlugin.ImImageFile(invalid_file) - def test_number(self): - self.assertEqual(1.2, ImImagePlugin.number("1.2")) + +def test_number(): + assert ImImagePlugin.number("1.2") == 1.2