Skip to content

Commit 652cb48

Browse files
Mambounalordmauve
authored andcommitted
FIX #290 - Added tests for screenshots
1 parent 1dcebfa commit 652cb48

1 file changed

Lines changed: 38 additions & 2 deletions

File tree

test/test_screen.py

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import sys
22
import unittest
3+
from unittest.mock import patch
4+
from tempfile import TemporaryDirectory
35
from pathlib import Path
46
import os
57
import warnings
@@ -9,7 +11,7 @@
911
import pygame.image
1012
import pygame.surfarray
1113

12-
from pgzero.screen import Screen
14+
import pgzero.screen as screen
1315
from pgzero.loaders import set_root, images
1416
from pgzero.rect import Rect, ZRect
1517

@@ -96,7 +98,7 @@ def tearDownClass(cls):
9698
pygame.display.quit()
9799

98100
def setUp(self):
99-
self.screen = Screen()
101+
self.screen = screen.Screen()
100102
self.screen._set_surface(self.surf)
101103
self.screen.clear()
102104

@@ -238,6 +240,40 @@ def test_bounds(self):
238240
ZRect(0, 0, 200, 200)
239241
)
240242

243+
@patch("sys.platform", "win32")
244+
@patch.dict("os.environ", {"USERPROFILE": r"c:\Users\user"})
245+
def test_get_screenshot_path_windows(self):
246+
r"""Screenshot path on Windows is %USERPROFILE%\Pictures\pgzero."""
247+
result_path = screen._get_platform_screenshot_path()
248+
self.assertEqual(result_path,
249+
os.path.join(r"c:\Users\user", "Pictures", "pgzero"))
250+
251+
@patch("sys.platform", "linux")
252+
@patch.dict("os.environ", {"HOME": "/home/user"})
253+
def test_get_screenshot_path_linux(self):
254+
"""Screenshot path on Linux or MacOS is ~/Pictures/pgzero."""
255+
result_path = screen._get_platform_screenshot_path()
256+
self.assertEqual(result_path,
257+
os.path.join("/home/user", "Pictures", "pgzero"))
258+
259+
@patch("sys.platform", "NOTHING")
260+
def test_get_screenshot_path_other(self):
261+
"""If OS is not supported, CWD is used for screenshots."""
262+
result_path = screen._get_platform_screenshot_path()
263+
self.assertEqual(result_path,
264+
os.path.join(os.getcwd(), "pgzero_screenshots"))
265+
266+
@patch("sys.platform", "NOTHING")
267+
def test_take_screenshot(self):
268+
"""Screenshot files are created and have the proper extension."""
269+
with TemporaryDirectory("screenshot_testdir") as td:
270+
os.chdir(td)
271+
screen._initialize_screenshots(__file__)
272+
self.screen.screenshot()
273+
self.assertEqual(len(os.listdir("pgzero_screenshots")), 1)
274+
ext = os.listdir("pgzero_screenshots")[0].split(".")[-1]
275+
self.assertEqual(ext, "png")
276+
241277

242278
if __name__ == '__main__':
243279
unittest.main()

0 commit comments

Comments
 (0)