diff options
Diffstat (limited to 'lib/python/qmk/tests')
-rw-r--r-- | lib/python/qmk/tests/test_cli_commands.py | 126 | ||||
-rw-r--r-- | lib/python/qmk/tests/test_qmk_keymap.py | 4 |
2 files changed, 107 insertions, 23 deletions
diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py index 3b4e66a211..dce270de83 100644 --- a/lib/python/qmk/tests/test_cli_commands.py +++ b/lib/python/qmk/tests/test_cli_commands.py @@ -4,67 +4,151 @@ from qmk.commands import run def check_subcommand(command, *args): cmd = ['bin/qmk', command] + list(args) - return run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) + result = run(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True) + return result + + +def check_returncode(result, expected=0): + """Print stdout if `result.returncode` does not match `expected`. + """ + if result.returncode != expected: + print('`%s` stdout:' % ' '.join(result.args)) + print(result.stdout) + print('returncode:', result.returncode) + assert result.returncode == expected def test_cformat(): result = check_subcommand('cformat', 'quantum/matrix.c') - assert result.returncode == 0 + check_returncode(result) def test_compile(): - assert check_subcommand('compile', '-kb', 'handwired/onekey/pytest', '-km', 'default').returncode == 0 + result = check_subcommand('compile', '-kb', 'handwired/onekey/pytest', '-km', 'default', '-n') + check_returncode(result) def test_flash(): - assert check_subcommand('flash', '-b').returncode == 1 - assert check_subcommand('flash').returncode == 1 + result = check_subcommand('flash', '-kb', 'handwired/onekey/pytest', '-km', 'default', '-n') + check_returncode(result) + + +def test_flash_bootloaders(): + result = check_subcommand('flash', '-b') + check_returncode(result, 1) def test_config(): result = check_subcommand('config') - assert result.returncode == 0 + check_returncode(result) assert 'general.color' in result.stdout def test_kle2json(): - assert check_subcommand('kle2json', 'kle.txt', '-f').returncode == 0 + result = check_subcommand('kle2json', 'kle.txt', '-f') + check_returncode(result) def test_doctor(): result = check_subcommand('doctor', '-n') - assert result.returncode == 0 - assert 'QMK Doctor is checking your environment.' in result.stderr - assert 'QMK is ready to go' in result.stderr + check_returncode(result) + assert 'QMK Doctor is checking your environment.' in result.stdout + assert 'QMK is ready to go' in result.stdout def test_hello(): result = check_subcommand('hello') - assert result.returncode == 0 - assert 'Hello,' in result.stderr + check_returncode(result) + assert 'Hello,' in result.stdout def test_pyformat(): result = check_subcommand('pyformat') - assert result.returncode == 0 - assert 'Successfully formatted the python code' in result.stderr + check_returncode(result) + assert 'Successfully formatted the python code' in result.stdout def test_list_keyboards(): result = check_subcommand('list-keyboards') - assert result.returncode == 0 + check_returncode(result) # check to see if a known keyboard is returned # this will fail if handwired/onekey/pytest is removed assert 'handwired/onekey/pytest' in result.stdout def test_list_keymaps(): - result = check_subcommand("list-keymaps", "-kb", "handwired/onekey/pytest") - assert result.returncode == 0 - assert "default" and "test" in result.stdout + result = check_subcommand('list-keymaps', '-kb', 'handwired/onekey/pytest') + check_returncode(result, 0) + assert 'default' and 'test' in result.stdout + + +def test_list_keymaps_long(): + result = check_subcommand('list-keymaps', '--keyboard', 'handwired/onekey/pytest') + check_returncode(result, 0) + assert 'default' and 'test' in result.stdout + + +def test_list_keymaps_kb_only(): + result = check_subcommand('list-keymaps', '-kb', 'niu_mini') + check_returncode(result, 0) + assert 'default' and 'via' in result.stdout + + +def test_list_keymaps_vendor_kb(): + result = check_subcommand('list-keymaps', '-kb', 'ai03/lunar') + check_returncode(result, 0) + assert 'default' and 'via' in result.stdout + + +def test_list_keymaps_vendor_kb_rev(): + result = check_subcommand('list-keymaps', '-kb', 'kbdfans/kbd67/mkiirgb/v2') + check_returncode(result, 0) + assert 'default' and 'via' in result.stdout def test_list_keymaps_no_keyboard_found(): - result = check_subcommand("list-keymaps", "-kb", "asdfghjkl") - assert result.returncode == 0 - assert "does not exist" in result.stdout + result = check_subcommand('list-keymaps', '-kb', 'asdfghjkl') + check_returncode(result, 1) + assert 'does not exist' in result.stdout + + +def test_json2c(): + result = check_subcommand('json2c', 'keyboards/handwired/onekey/keymaps/default_json/keymap.json') + check_returncode(result, 0) + assert result.stdout == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT(KC_A)};\n\n' + + +def test_info(): + result = check_subcommand('info', '-kb', 'handwired/onekey/pytest') + check_returncode(result) + assert 'Keyboard Name: handwired/onekey/pytest' in result.stdout + assert 'Processor: STM32F303' in result.stdout + assert 'Layout:' not in result.stdout + assert 'k0' not in result.stdout + + +def test_info_keyboard_render(): + result = check_subcommand('info', '-kb', 'handwired/onekey/pytest', '-l') + check_returncode(result) + assert 'Keyboard Name: handwired/onekey/pytest' in result.stdout + assert 'Processor: STM32F303' in result.stdout + assert 'Layout:' in result.stdout + assert 'k0' in result.stdout + + +def test_info_keymap_render(): + result = check_subcommand('info', '-kb', 'handwired/onekey/pytest', '-km', 'default_json') + check_returncode(result) + assert 'Keyboard Name: handwired/onekey/pytest' in result.stdout + assert 'Processor: STM32F303' in result.stdout + assert '│A │' in result.stdout + + +def test_info_matrix_render(): + result = check_subcommand('info', '-kb', 'handwired/onekey/pytest', '-m') + check_returncode(result) + assert 'Keyboard Name: handwired/onekey/pytest' in result.stdout + assert 'Processor: STM32F303' in result.stdout + assert 'LAYOUT' in result.stdout + assert '│0A│' in result.stdout + assert 'Matrix for "LAYOUT"' in result.stdout diff --git a/lib/python/qmk/tests/test_qmk_keymap.py b/lib/python/qmk/tests/test_qmk_keymap.py index 2db625600e..d8669e5498 100644 --- a/lib/python/qmk/tests/test_qmk_keymap.py +++ b/lib/python/qmk/tests/test_qmk_keymap.py @@ -8,12 +8,12 @@ def test_template_onekey_proton_c(): def test_template_onekey_pytest(): templ = qmk.keymap.template('handwired/onekey/pytest') - assert templ == 'const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__};\n' + assert templ == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {__KEYMAP_GOES_HERE__};\n' def test_generate_onekey_pytest(): templ = qmk.keymap.generate('handwired/onekey/pytest', 'LAYOUT', [['KC_A']]) - assert templ == 'const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT(KC_A)};\n' + assert templ == '#include QMK_KEYBOARD_H\nconst uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\t[0] = LAYOUT(KC_A)};\n' # FIXME(skullydazed): Add a test for qmk.keymap.write that mocks up an FD. |