Coverage for gws-app/gws/lib/font/_test.py: 100%

27 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-10-16 23:09 +0200

1"""Tests for the font module.""" 

2 

3from unittest import mock 

4 

5import gws 

6import gws.lib.font as font 

7import gws.test.util as u 

8 

9 

10def test_configure(): 

11 # Test with no directory 

12 config = font.Config(dir=None) 

13 with mock.patch('gws.lib.font.install_fonts') as mock_install: 

14 font.configure(config) 

15 mock_install.assert_not_called() 

16 

17 # Test with directory 

18 config = font.Config(dir="/test/fonts") 

19 with mock.patch('gws.lib.font.install_fonts') as mock_install: 

20 font.configure(config) 

21 mock_install.assert_called_once_with("/test/fonts") 

22 

23 

24def test_install_fonts(): 

25 with mock.patch('gws.lib.osx.run') as mock_run, \ 

26 mock.patch('gws.lib.osx.find_files', return_value=['/test/fonts/font1.ttf', '/test/fonts/font2.ttf']): 

27 font.install_fonts('/test/fonts') 

28 

29 # Check mkdir call 

30 mock_run.assert_any_call(['mkdir', '-p', '/usr/local/share/fonts'], echo=True) 

31 

32 # Check copy calls 

33 mock_run.assert_any_call(['cp', '-v', '/test/fonts/font1.ttf', '/usr/local/share/fonts'], echo=True) 

34 mock_run.assert_any_call(['cp', '-v', '/test/fonts/font2.ttf', '/usr/local/share/fonts'], echo=True) 

35 

36 # Check font cache update 

37 mock_run.assert_any_call(['fc-cache', '-fv'], echo=True) 

38 

39 

40def test_from_name(): 

41 # Mock the PIL.ImageFont.truetype function 

42 with mock.patch('PIL.ImageFont.truetype') as mock_truetype: 

43 mock_font = mock.MagicMock() 

44 mock_truetype.return_value = mock_font 

45 

46 result = font.from_name("Arial", 12) 

47 

48 # Check that truetype was called with correct parameters 

49 mock_truetype.assert_called_once_with(font="Arial", size=12) 

50 assert result == mock_font