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

43 statements  

« prev     ^ index     » next       coverage.py v7.17.2, created at 2026-11-07 05:08 +0000

1# This file is part of the Apio project 

2# (C) 2016-present FPGAwars 

3# Project authors: 

4# * Jesús Arroyo (Jesus89) (2016-2019) 

5# * Juan Gonzalez (obijuan) (2019-2024) 

6# * The Apio Team (2024-present) 

7# License: GPLv2 

8 

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

10 

11import os 

12from os.path import getsize 

13from tests.conftest import ApioRunner 

14from apio.commands.apio import apio_top_cli as apio 

15from apio.common.apio_console import cunstyle 

16 

17 

18def test_examples(apio_runner: ApioRunner): 

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

20 

21 with apio_runner.in_sandbox() as sb: 

22 

23 # -- Execute "apio examples" 

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

25 sb.assert_result_ok(result) 

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

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

28 

29 # -- 'apio examples list' 

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

31 sb.assert_result_ok(result) 

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

33 assert "Turns on an LED" in result.output 

34 

35 # -- 'apio examples list --docs' 

36 result = sb.invoke_apio_cmd(apio, ["examples", "list", "--docs"]) 

37 sb.assert_result_ok(result) 

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

39 assert "Turns on an LED" in result.output 

40 

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

42 result = sb.invoke_apio_cmd( 

43 apio, 

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

45 terminal_mode=False, 

46 ) 

47 sb.assert_result_ok(result) 

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

49 assert ( 

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

51 ) 

52 assert getsize("apio.ini") 

53 assert getsize("main.v") 

54 

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

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

57 os.chdir("temp") 

58 result = sb.invoke_apio_cmd( 

59 apio, 

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

61 terminal_mode=False, 

62 ) 

63 sb.assert_result_ok(result) 

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

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

66 assert "Examples fetched successfully" in result.output 

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

68 os.chdir("..") 

69 

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

71 result = sb.invoke_apio_cmd( 

72 apio, 

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

74 terminal_mode=False, 

75 ) 

76 sb.assert_result_ok(result) 

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

78 assert ( 

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

80 ) 

81 assert getsize("dir1/main.v") 

82 

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

84 result = sb.invoke_apio_cmd( 

85 apio, 

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

87 terminal_mode=False, 

88 ) 

89 sb.assert_result_ok(result) 

90 assert "Examples fetched successfully" in result.output 

91 assert getsize("dir2/ledon/main.v")