diff --git a/.coveragerc b/.coveragerc index 87e3e968f..39ae20ac6 100644 --- a/.coveragerc +++ b/.coveragerc @@ -11,4 +11,6 @@ exclude_lines = if __name__ == .__main__.: # Don't complain about debug code if Image.DEBUG: - if DEBUG: \ No newline at end of file + if DEBUG: + # Don't complain about Windows code as Travis is Linux + if sys.platform == "win32": diff --git a/Tests/test_imagefont.py b/Tests/test_imagefont.py index 927c80bee..ea1b13cc6 100644 --- a/Tests/test_imagefont.py +++ b/Tests/test_imagefont.py @@ -5,8 +5,8 @@ from PIL import ImageDraw from io import BytesIO import os -font_path = "Tests/fonts/FreeMono.ttf" -font_size = 20 +FONT_PATH = "Tests/fonts/FreeMono.ttf" +FONT_SIZE = 20 try: @@ -20,17 +20,17 @@ try: ImageFont.core.freetype2_version, "\d+\.\d+\.\d+$") def test_font_with_name(self): - ImageFont.truetype(font_path, font_size) - self._render(font_path) + ImageFont.truetype(FONT_PATH, FONT_SIZE) + self._render(FONT_PATH) self._clean() def _font_as_bytes(self): - with open(font_path, 'rb') as f: + with open(FONT_PATH, 'rb') as f: font_bytes = BytesIO(f.read()) return font_bytes def test_font_with_filelike(self): - ImageFont.truetype(self._font_as_bytes(), font_size) + ImageFont.truetype(self._font_as_bytes(), FONT_SIZE) self._render(self._font_as_bytes()) # Usage note: making two fonts from the same buffer fails. # shared_bytes = self._font_as_bytes() @@ -39,18 +39,18 @@ try: self._clean() def test_font_with_open_file(self): - with open(font_path, 'rb') as f: + with open(FONT_PATH, 'rb') as f: self._render(f) self._clean() def test_font_old_parameters(self): self.assert_warning( DeprecationWarning, - lambda: ImageFont.truetype(filename=font_path, size=font_size)) + lambda: ImageFont.truetype(filename=FONT_PATH, size=FONT_SIZE)) def _render(self, font): txt = "Hello World!" - ttf = ImageFont.truetype(font, font_size) + ttf = ImageFont.truetype(font, FONT_SIZE) w, h = ttf.getsize(txt) img = Image.new("RGB", (256, 64), "white") d = ImageDraw.Draw(img) @@ -63,8 +63,8 @@ try: os.unlink('font.png') def test_render_equal(self): - img_path = self._render(font_path) - with open(font_path, 'rb') as f: + img_path = self._render(FONT_PATH) + with open(FONT_PATH, 'rb') as f: font_filelike = BytesIO(f.read()) img_filelike = self._render(font_filelike) @@ -74,7 +74,7 @@ try: def test_render_multiline(self): im = Image.new(mode='RGB', size=(300, 100)) draw = ImageDraw.Draw(im) - ttf = ImageFont.truetype(font_path, font_size) + ttf = ImageFont.truetype(FONT_PATH, FONT_SIZE) line_spacing = draw.textsize('A', font=ttf)[1] + 8 lines = ['hey you', 'you are awesome', 'this looks awkward'] y = 0 @@ -94,7 +94,7 @@ try: img_grey = Image.new("L", (100, 100)) draw = ImageDraw.Draw(img_grey) word = "testing" - font = ImageFont.truetype(font_path, font_size) + font = ImageFont.truetype(FONT_PATH, FONT_SIZE) orientation = Image.ROTATE_90 transposed_font = ImageFont.TransposedFont( @@ -116,7 +116,7 @@ try: img_grey = Image.new("L", (100, 100)) draw = ImageDraw.Draw(img_grey) word = "testing" - font = ImageFont.truetype(font_path, font_size) + font = ImageFont.truetype(FONT_PATH, FONT_SIZE) orientation = None transposed_font = ImageFont.TransposedFont( @@ -133,6 +133,52 @@ try: # Check boxes a and b are same size self.assertEqual(box_size_a, box_size_b) + def test_free_type_font_get_name(self): + # Arrange + font = ImageFont.truetype(FONT_PATH, FONT_SIZE) + + # Act + name = font.getname() + + # Assert + self.assertEqual(('FreeMono', 'Regular'), name) + + def test_free_type_font_get_metrics(self): + # Arrange + font = ImageFont.truetype(FONT_PATH, FONT_SIZE) + + # Act + ascent, descent = font.getmetrics() + + # Assert + self.assertIsInstance(ascent, int) + self.assertIsInstance(descent, int) + self.assertEqual((ascent, descent), (16, 4)) # too exact check? + + def test_load_path_not_found(self): + # Arrange + filename = "somefilenamethatdoesntexist.ttf" + + # Act/Assert + self.assertRaises(IOError, lambda: ImageFont.load_path(filename)) + + def test_default_font(self): + # Arrange + txt = 'This is a "better than nothing" default font.' + im = Image.new(mode='RGB', size=(300, 100)) + draw = ImageDraw.Draw(im) + + target = 'Tests/images/default_font.png' + target_img = Image.open(target) + + # Act + default_font = ImageFont.load_default() + draw.text((10, 10), txt, font=default_font) + + # Assert + self.assert_image_equal(im, target_img) + + except ImportError: class TestImageFont(PillowTestCase): def test_skip(self):