aboutsummaryrefslogtreecommitdiff
path: root/lib/python/qmk/cli
diff options
context:
space:
mode:
authorskullY <skullydazed@gmail.com>2019-08-21 23:40:24 -0700
committerskullydazed <skullydazed@users.noreply.github.com>2019-09-07 07:58:41 -0700
commit5b7a5b2a7629fbb667d23a55836dce3c6c46a203 (patch)
treeb153a030844887422464c6c4f4833242b34a9314 /lib/python/qmk/cli
parent4d339b7b5d1ecc2320080798d7e07e2d43675578 (diff)
downloadqmk_firmware-5b7a5b2a7629fbb667d23a55836dce3c6c46a203.tar.gz
qmk_firmware-5b7a5b2a7629fbb667d23a55836dce3c6c46a203.zip
Setup a python test framework
Diffstat (limited to 'lib/python/qmk/cli')
-rwxr-xr-xlib/python/qmk/cli/doctor.py30
-rw-r--r--lib/python/qmk/cli/nose2.py18
2 files changed, 40 insertions, 8 deletions
diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py
index 9ce765a4b..c5a144363 100755
--- a/lib/python/qmk/cli/doctor.py
+++ b/lib/python/qmk/cli/doctor.py
@@ -2,9 +2,11 @@
2 2
3Check up for QMK environment. 3Check up for QMK environment.
4""" 4"""
5import shutil
6import platform
7import os 5import os
6import platform
7import shutil
8import subprocess
9from glob import glob
8 10
9from milc import cli 11from milc import cli
10 12
@@ -16,32 +18,44 @@ def main(cli):
16 This is currently very simple, it just checks that all the expected binaries are on your system. 18 This is currently very simple, it just checks that all the expected binaries are on your system.
17 19
18 TODO(unclaimed): 20 TODO(unclaimed):
19 * [ ] Run the binaries to make sure they work
20 * [ ] Compile a trivial program with each compiler 21 * [ ] Compile a trivial program with each compiler
21 * [ ] Check for udev entries on linux 22 * [ ] Check for udev entries on linux
22 """ 23 """
23 24
24 binaries = ['dfu-programmer', 'avrdude', 'dfu-util', 'avr-gcc', 'arm-none-eabi-gcc'] 25 binaries = ['dfu-programmer', 'avrdude', 'dfu-util', 'avr-gcc', 'arm-none-eabi-gcc']
26 binaries += glob('bin/qmk-*')
25 27
26 cli.log.info('QMK Doctor is Checking your environment') 28 cli.log.info('QMK Doctor is checking your environment')
27 29
28 ok = True 30 ok = True
29 for binary in binaries: 31 for binary in binaries:
30 res = shutil.which(binary) 32 res = shutil.which(binary)
31 if res is None: 33 if res is None:
32 cli.log.error('{fg_red}QMK can\'t find ' + binary + ' in your path') 34 cli.log.error("{fg_red}QMK can't find %s in your path", binary)
33 ok = False 35 ok = False
36 else:
37 try:
38 subprocess.run([binary, '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=5, check=True)
39 except subprocess.CalledProcessError:
40 cli.log.error("{fg_red}Can't run `%s --version`", binary)
41 ok = False
34 42
35 OS = platform.system() 43 OS = platform.system()
36 if OS == "Darwin": 44 if OS == "Darwin":
37 cli.log.info("Detected {fg_cyan}macOS") 45 cli.log.info("Detected {fg_cyan}macOS")
38 elif OS == "Linux": 46 elif OS == "Linux":
39 cli.log.info("Detected {fg_cyan}linux") 47 cli.log.info("Detected {fg_cyan}linux")
40 test = 'systemctl list-unit-files | grep enabled | grep -i ModemManager' 48 if shutil.which('systemctl'):
41 if os.system(test) == 0: 49 test = 'systemctl list-unit-files | grep enabled | grep -i ModemManager'
42 cli.log.warn("{bg_yellow}Detected modem manager. Please disable it if you are using Pro Micros") 50 if os.system(test) == 0:
51 cli.log.warn("{bg_yellow}Detected modem manager. Please disable it if you are using Pro Micros")
52 else:
53 cli.log.warn("Can't find systemctl to check for ModemManager.")
43 else: 54 else:
44 cli.log.info("Assuming {fg_cyan}Windows") 55 cli.log.info("Assuming {fg_cyan}Windows")
45 56
46 if ok: 57 if ok:
47 cli.log.info('{fg_green}QMK is ready to go') 58 cli.log.info('{fg_green}QMK is ready to go')
59 else:
60 cli.log.info('{fg_yellow}Problems detected, please fix these problems before proceeding.')
61 # FIXME(skullydazed): Link to a document about troubleshooting, or discord or something
diff --git a/lib/python/qmk/cli/nose2.py b/lib/python/qmk/cli/nose2.py
new file mode 100644
index 000000000..c6c9c67b3
--- /dev/null
+++ b/lib/python/qmk/cli/nose2.py
@@ -0,0 +1,18 @@
1"""QMK Python Unit Tests
2
3QMK script to run unit and integration tests against our python code.
4"""
5from milc import cli
6
7
8@cli.entrypoint('QMK Python Unit Tests')
9def main(cli):
10 """Use nose2 to run unittests
11 """
12 try:
13 import nose2
14 except ImportError:
15 cli.log.error('Could not import nose2! Please install it with {fg_cyan}pip3 install nose2')
16 return False
17
18 nose2.discover()