Coverage for tests/unit_tests/commands/test_apio_examples.py: 100%

39 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-11-06 10:20 +0000

1"""Test for the "apio examples" command.""" 

2 

3import os 

4from os.path import getsize 

5from tests.conftest import ApioRunner 

6from apio.commands.apio import apio_top_cli as apio 

7from apio.common.apio_console import cunstyle 

8 

9 

10def test_examples(apio_runner: ApioRunner): 

11 """Tests the listing and fetching apio examples.""" 

12 

13 with apio_runner.in_sandbox() as sb: 

14 

15 # -- Execute "apio examples" 

16 result = sb.invoke_apio_cmd(apio, ["examples"]) 

17 sb.assert_result_ok(result) 

18 assert "Subcommands:" in cunstyle(result.output) 

19 assert "examples list" in cunstyle(result.output) 

20 

21 # -- 'apio examples list' 

22 result = sb.invoke_apio_cmd(apio, ["examples", "list"]) 

23 sb.assert_result_ok(result) 

24 assert "alhambra-ii/ledon" in result.output 

25 assert "Turning on a led" in result.output 

26 

27 # -- 'apio examples fetch alhambra-ii/ledon' (colors off) 

28 result = sb.invoke_apio_cmd( 

29 apio, 

30 ["examples", "fetch", "alhambra-ii/ledon"], 

31 terminal_mode=False, 

32 ) 

33 sb.assert_result_ok(result) 

34 assert "Copying alhambra-ii/ledon example files" in result.output 

35 assert ( 

36 "Example 'alhambra-ii/ledon' fetched successfully" in result.output 

37 ) 

38 assert getsize("apio.ini") 

39 assert getsize("ledon.v") 

40 

41 # -- 'apio examples fetch alhambra-ii' (colors off) 

42 os.makedirs("temp", exist_ok=False) 

43 os.chdir("temp") 

44 result = sb.invoke_apio_cmd( 

45 apio, 

46 ["examples", "fetch", "alhambra-ii"], 

47 terminal_mode=False, 

48 ) 

49 sb.assert_result_ok(result) 

50 assert "Fetching alhambra-ii/blinky" in result.output 

51 assert "Fetching alhambra-ii/ledon" in result.output 

52 assert "Examples fetched successfully" in result.output 

53 assert getsize("ledon/ledon.v") 

54 os.chdir("..") 

55 

56 # -- 'apio examples fetch alhambra-ii/ledon -d dir1' (colors off) 

57 result = sb.invoke_apio_cmd( 

58 apio, 

59 ["examples", "fetch", "alhambra-ii/ledon", "-d", "dir1"], 

60 terminal_mode=False, 

61 ) 

62 sb.assert_result_ok(result) 

63 assert "Copying alhambra-ii/ledon example files" in result.output 

64 assert ( 

65 "Example 'alhambra-ii/ledon' fetched successfully" in result.output 

66 ) 

67 assert getsize("dir1/ledon.v") 

68 

69 # -- 'apio examples fetch alhambra -d dir2 (colors off) 

70 result = sb.invoke_apio_cmd( 

71 apio, 

72 ["examples", "fetch", "alhambra-ii", "-d", "dir2"], 

73 terminal_mode=False, 

74 ) 

75 sb.assert_result_ok(result) 

76 assert "Examples fetched successfully" in result.output 

77 assert getsize("dir2/ledon/ledon.v")