diff options
| author | skullY <[email protected]> | 2019-08-21 23:40:24 -0700 | 
|---|---|---|
| committer | skullydazed <[email protected]> | 2019-09-07 07:58:41 -0700 | 
| commit | 5b7a5b2a7629fbb667d23a55836dce3c6c46a203 (patch) | |
| tree | b153a030844887422464c6c4f4833242b34a9314 /lib/python/qmk/cli/doctor.py | |
| parent | 4d339b7b5d1ecc2320080798d7e07e2d43675578 (diff) | |
| download | qmk_firmware-5b7a5b2a7629fbb667d23a55836dce3c6c46a203.tar.gz qmk_firmware-5b7a5b2a7629fbb667d23a55836dce3c6c46a203.zip | |
Setup a python test framework
Diffstat (limited to 'lib/python/qmk/cli/doctor.py')
| -rwxr-xr-x | lib/python/qmk/cli/doctor.py | 30 | 
1 files changed, 22 insertions, 8 deletions
| diff --git a/lib/python/qmk/cli/doctor.py b/lib/python/qmk/cli/doctor.py index 9ce765a4b5..c5a144363c 100755 --- a/lib/python/qmk/cli/doctor.py +++ b/lib/python/qmk/cli/doctor.py @@ -2,9 +2,11 @@  Check up for QMK environment.  """ -import shutil -import platform  import os +import platform +import shutil +import subprocess +from glob import glob  from milc import cli @@ -16,32 +18,44 @@ def main(cli):      This is currently very simple, it just checks that all the expected binaries are on your system.      TODO(unclaimed): -        * [ ] Run the binaries to make sure they work          * [ ] Compile a trivial program with each compiler          * [ ] Check for udev entries on linux      """      binaries = ['dfu-programmer', 'avrdude', 'dfu-util', 'avr-gcc', 'arm-none-eabi-gcc'] +    binaries += glob('bin/qmk-*') -    cli.log.info('QMK Doctor is Checking your environment') +    cli.log.info('QMK Doctor is checking your environment')      ok = True      for binary in binaries:          res = shutil.which(binary)          if res is None: -            cli.log.error('{fg_red}QMK can\'t find ' + binary + ' in your path') +            cli.log.error("{fg_red}QMK can't find %s in your path", binary)              ok = False +        else: +            try: +                subprocess.run([binary, '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=5, check=True) +            except subprocess.CalledProcessError: +                cli.log.error("{fg_red}Can't run `%s --version`", binary) +                ok = False      OS = platform.system()      if OS == "Darwin":          cli.log.info("Detected {fg_cyan}macOS")      elif OS == "Linux":          cli.log.info("Detected {fg_cyan}linux") -        test = 'systemctl list-unit-files | grep enabled | grep -i ModemManager' -        if os.system(test) == 0: -            cli.log.warn("{bg_yellow}Detected modem manager. Please disable it if you are using Pro Micros") +        if shutil.which('systemctl'): +            test = 'systemctl list-unit-files | grep enabled | grep -i ModemManager' +            if os.system(test) == 0: +                cli.log.warn("{bg_yellow}Detected modem manager. Please disable it if you are using Pro Micros") +        else: +            cli.log.warn("Can't find systemctl to check for ModemManager.")      else:          cli.log.info("Assuming {fg_cyan}Windows")      if ok:          cli.log.info('{fg_green}QMK is ready to go') +    else: +        cli.log.info('{fg_yellow}Problems detected, please fix these problems before proceeding.') +        # FIXME(skullydazed): Link to a document about troubleshooting, or discord or something | 
