aboutsummaryrefslogtreecommitdiff
path: root/lib/python/qmk/tests/test_cli_commands.py
diff options
context:
space:
mode:
authorZach White <skullydazed@users.noreply.github.com>2020-05-26 13:05:41 -0700
committerGitHub <noreply@github.com>2020-05-26 13:05:41 -0700
commit751316c34465ea77e066c3052729b207f3d62e0c (patch)
treecb99656b93c156757e2fd7c84fe716f9c300ca89 /lib/python/qmk/tests/test_cli_commands.py
parent5d3bf8a050f3c0beb1f91147dc1ab54de36cbb05 (diff)
downloadqmk_firmware-751316c34465ea77e066c3052729b207f3d62e0c.tar.gz
qmk_firmware-751316c34465ea77e066c3052729b207f3d62e0c.zip
[CLI] Add a subcommand for getting information about a keyboard (#8666)
You can now use `qmk info` to get information about keyboards and keymaps. Co-authored-by: Erovia <Erovia@users.noreply.github.com>
Diffstat (limited to 'lib/python/qmk/tests/test_cli_commands.py')
-rw-r--r--lib/python/qmk/tests/test_cli_commands.py104
1 files changed, 83 insertions, 21 deletions
diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py
index 768929de1..dce270de8 100644
--- a/lib/python/qmk/tests/test_cli_commands.py
+++ b/lib/python/qmk/tests/test_cli_commands.py
@@ -4,89 +4,151 @@ from qmk.commands import run
4 4
5def check_subcommand(command, *args): 5def check_subcommand(command, *args):
6 cmd = ['bin/qmk', command] + list(args) 6 cmd = ['bin/qmk', command] + list(args)
7 return run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) 7 result = run(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
8 return result
9
10
11def check_returncode(result, expected=0):
12 """Print stdout if `result.returncode` does not match `expected`.
13 """
14 if result.returncode != expected:
15 print('`%s` stdout:' % ' '.join(result.args))
16 print(result.stdout)
17 print('returncode:', result.returncode)
18 assert result.returncode == expected
8 19
9 20
10def test_cformat(): 21def test_cformat():
11 result = check_subcommand('cformat', 'quantum/matrix.c') 22 result = check_subcommand('cformat', 'quantum/matrix.c')
12 assert result.returncode == 0 23 check_returncode(result)
13 24
14 25
15def test_compile(): 26def test_compile():
16 assert check_subcommand('compile', '-kb', 'handwired/onekey/pytest', '-km', 'default').returncode == 0 27 result = check_subcommand('compile', '-kb', 'handwired/onekey/pytest', '-km', 'default', '-n')
28 check_returncode(result)
17 29
18 30
19def test_flash(): 31def test_flash():
20 assert check_subcommand('flash', '-b').returncode == 1 32 result = check_subcommand('flash', '-kb', 'handwired/onekey/pytest', '-km', 'default', '-n')
21 assert check_subcommand('flash').returncode == 1 33 check_returncode(result)
34
35
36def test_flash_bootloaders():
37 result = check_subcommand('flash', '-b')
38 check_returncode(result, 1)
22 39
23 40
24def test_config(): 41def test_config():
25 result = check_subcommand('config') 42 result = check_subcommand('config')
26 assert result.returncode == 0 43 check_returncode(result)
27 assert 'general.color' in result.stdout 44 assert 'general.color' in result.stdout
28 45
29 46
30def test_kle2json(): 47def test_kle2json():
31 assert check_subcommand('kle2json', 'kle.txt', '-f').returncode == 0 48 result = check_subcommand('kle2json', 'kle.txt', '-f')
49 check_returncode(result)
32 50
33 51
34def test_doctor(): 52def test_doctor():
35 result = check_subcommand('doctor', '-n') 53 result = check_subcommand('doctor', '-n')
36 assert result.returncode == 0 54 check_returncode(result)
37 assert 'QMK Doctor is checking your environment.' in result.stderr 55 assert 'QMK Doctor is checking your environment.' in result.stdout
38 assert 'QMK is ready to go' in result.stderr 56 assert 'QMK is ready to go' in result.stdout
39 57
40 58
41def test_hello(): 59def test_hello():
42 result = check_subcommand('hello') 60 result = check_subcommand('hello')
43 assert result.returncode == 0 61 check_returncode(result)
44 assert 'Hello,' in result.stderr 62 assert 'Hello,' in result.stdout
45 63
46 64
47def test_pyformat(): 65def test_pyformat():
48 result = check_subcommand('pyformat') 66 result = check_subcommand('pyformat')
49 assert result.returncode == 0 67 check_returncode(result)
50 assert 'Successfully formatted the python code' in result.stderr 68 assert 'Successfully formatted the python code' in result.stdout
69
70
71def test_list_keyboards():
72 result = check_subcommand('list-keyboards')
73 check_returncode(result)
74 # check to see if a known keyboard is returned
75 # this will fail if handwired/onekey/pytest is removed
76 assert 'handwired/onekey/pytest' in result.stdout
51 77
52 78
53def test_list_keymaps(): 79def test_list_keymaps():
54 result = check_subcommand('list-keymaps', '-kb', 'handwired/onekey/pytest') 80 result = check_subcommand('list-keymaps', '-kb', 'handwired/onekey/pytest')
55 assert result.returncode == 0 81 check_returncode(result, 0)
56 assert 'default' and 'test' in result.stdout 82 assert 'default' and 'test' in result.stdout
57 83
58 84
59def test_list_keymaps_long(): 85def test_list_keymaps_long():
60 result = check_subcommand('list-keymaps', '--keyboard', 'handwired/onekey/pytest') 86 result = check_subcommand('list-keymaps', '--keyboard', 'handwired/onekey/pytest')
61 assert result.returncode == 0 87 check_returncode(result, 0)
62 assert 'default' and 'test' in result.stdout 88 assert 'default' and 'test' in result.stdout
63 89
64 90
65def test_list_keymaps_kb_only(): 91def test_list_keymaps_kb_only():
66 result = check_subcommand('list-keymaps', '-kb', 'niu_mini') 92 result = check_subcommand('list-keymaps', '-kb', 'niu_mini')
67 assert result.returncode == 0 93 check_returncode(result, 0)
68 assert 'default' and 'via' in result.stdout 94 assert 'default' and 'via' in result.stdout
69 95
70 96
71def test_list_keymaps_vendor_kb(): 97def test_list_keymaps_vendor_kb():
72 result = check_subcommand('list-keymaps', '-kb', 'ai03/lunar') 98 result = check_subcommand('list-keymaps', '-kb', 'ai03/lunar')
73 assert result.returncode == 0 99 check_returncode(result, 0)
74 assert 'default' and 'via' in result.stdout 100 assert 'default' and 'via' in result.stdout
75 101
76 102
77def test_list_keymaps_vendor_kb_rev(): 103def test_list_keymaps_vendor_kb_rev():
78 result = check_subcommand('list-keymaps', '-kb', 'kbdfans/kbd67/mkiirgb/v2') 104 result = check_subcommand('list-keymaps', '-kb', 'kbdfans/kbd67/mkiirgb/v2')
79 assert result.returncode == 0 105 check_returncode(result, 0)
80 assert 'default' and 'via' in result.stdout 106 assert 'default' and 'via' in result.stdout
81 107
82 108
83def test_list_keymaps_no_keyboard_found(): 109def test_list_keymaps_no_keyboard_found():
84 result = check_subcommand('list-keymaps', '-kb', 'asdfghjkl') 110 result = check_subcommand('list-keymaps', '-kb', 'asdfghjkl')
85 assert result.returncode == 0 111 check_returncode(result, 1)
86 assert 'does not exist' in result.stdout 112 assert 'does not exist' in result.stdout
87 113
88 114
89def test_json2c(): 115def test_json2c():
90 result = check_subcommand('json2c', 'keyboards/handwired/onekey/keymaps/default_json/keymap.json') 116 result = check_subcommand('json2c', 'keyboards/handwired/onekey/keymaps/default_json/keymap.json')
91 assert result.returncode == 0 117 check_returncode(result, 0)
92 assert result.stdout == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT(KC_A)};\n\n' 118 assert result.stdout == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT(KC_A)};\n\n'
119
120
121def test_info():
122 result = check_subcommand('info', '-kb', 'handwired/onekey/pytest')
123 check_returncode(result)
124 assert 'Keyboard Name: handwired/onekey/pytest' in result.stdout
125 assert 'Processor: STM32F303' in result.stdout
126 assert 'Layout:' not in result.stdout
127 assert 'k0' not in result.stdout
128
129
130def test_info_keyboard_render():
131 result = check_subcommand('info', '-kb', 'handwired/onekey/pytest', '-l')
132 check_returncode(result)
133 assert 'Keyboard Name: handwired/onekey/pytest' in result.stdout
134 assert 'Processor: STM32F303' in result.stdout
135 assert 'Layout:' in result.stdout
136 assert 'k0' in result.stdout
137
138
139def test_info_keymap_render():
140 result = check_subcommand('info', '-kb', 'handwired/onekey/pytest', '-km', 'default_json')
141 check_returncode(result)
142 assert 'Keyboard Name: handwired/onekey/pytest' in result.stdout
143 assert 'Processor: STM32F303' in result.stdout
144 assert '│A │' in result.stdout
145
146
147def test_info_matrix_render():
148 result = check_subcommand('info', '-kb', 'handwired/onekey/pytest', '-m')
149 check_returncode(result)
150 assert 'Keyboard Name: handwired/onekey/pytest' in result.stdout
151 assert 'Processor: STM32F303' in result.stdout
152 assert 'LAYOUT' in result.stdout
153 assert '│0A│' in result.stdout
154 assert 'Matrix for "LAYOUT"' in result.stdout