aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2021-10-01 20:57:26 -0400
committerKevin O'Connor <kevin@koconnor.net>2021-10-04 14:36:08 -0400
commit41d42a07bf2ad23762dac02b615865efa86adfec (patch)
tree0ec2920a2e0ba782e51a45898744bde423cb03fd
parentb743a646857f54342704b3115ba1ad474e21c158 (diff)
downloadkutter-41d42a07bf2ad23762dac02b615865efa86adfec.tar.gz
kutter-41d42a07bf2ad23762dac02b615865efa86adfec.tar.xz
kutter-41d42a07bf2ad23762dac02b615865efa86adfec.zip
klippy: Add a build import test tool
Add a test case to verify that every optional module successfully loads on both Python2 and Python3. This is intended to catch syntax and module imports that are not compatible between Python versions. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r--klippy/klippy.py19
-rwxr-xr-xscripts/ci-build.sh8
2 files changed, 27 insertions, 0 deletions
diff --git a/klippy/klippy.py b/klippy/klippy.py
index df8e110c..050a36f2 100644
--- a/klippy/klippy.py
+++ b/klippy/klippy.py
@@ -256,6 +256,21 @@ class Printer:
# Startup
######################################################################
+def import_test():
+ # Import all optional modules (used as a build test)
+ dname = os.path.dirname(__file__)
+ for mname in ['extras', 'kinematics']:
+ for fname in os.listdir(os.path.join(dname, mname)):
+ if fname.endswith('.py') and fname != '__init__.py':
+ module_name = fname[:-3]
+ else:
+ iname = os.path.join(dname, mname, fname, '__init__.py')
+ if not os.path.exists(iname):
+ continue
+ module_name = fname
+ importlib.import_module(mname + '.' + module_name)
+ sys.exit(0)
+
def arg_dictionary(option, opt_str, value, parser):
key, fname = "dictionary", value
if '=' in value:
@@ -284,7 +299,11 @@ def main():
opts.add_option("-d", "--dictionary", dest="dictionary", type="string",
action="callback", callback=arg_dictionary,
help="file to read for mcu protocol dictionary")
+ opts.add_option("--import-test", action="store_true",
+ help="perform an import module test")
options, args = opts.parse_args()
+ if options.import_test:
+ import_test()
if len(args) != 1:
opts.error("Incorrect number of arguments")
start_args = {'config_file': args[0], 'apiserver': options.apiserver,
diff --git a/scripts/ci-build.sh b/scripts/ci-build.sh
index 286e4490..9d423964 100755
--- a/scripts/ci-build.sh
+++ b/scripts/ci-build.sh
@@ -64,6 +64,14 @@ done
# Verify klippy host software
######################################################################
+start_test klippy "Test klippy import (Python3)"
+$PYTHON klippy/klippy.py --import-test
+finish_test klippy "Test klippy import (Python3)"
+
+start_test klippy "Test klippy import (Python2)"
+$PYTHON2 klippy/klippy.py --import-test
+finish_test klippy "Test klippy import (Python2)"
+
start_test klippy "Test invoke klippy (Python3)"
$PYTHON scripts/test_klippy.py -d ${DICTDIR} test/klippy/*.test
finish_test klippy "Test invoke klippy (Python3)"