# # collect-code-tests.py # Convenience script to collect all code tests. Used by env:linux_native_test in native.ini. # import pioutil if pioutil.is_pio_build(): import os, re Import("env") Import("projenv") os.environ['PATH'] = f"./buildroot/bin/:./buildroot/tests/:{os.environ['PATH']}" def collect_test_suites(): """Get all the test suites""" from pathlib import Path return sorted(list(Path("./test").glob("*.ini"))) def register_test_suites(): """Register all the test suites""" targets = [] test_suites = collect_test_suites() for path in test_suites: name = re.sub(r'^\d+-|\.ini$', '', path.name) targets += [name]; env.AddCustomTarget( name = f"marlin_{name}", dependencies = None, actions = [ f"echo ====== Configuring for marlin_{name} ======", "restore_configs", f"cp -f {path} ./Marlin/config.ini", "python ./buildroot/share/PlatformIO/scripts/configuration.py", f"platformio test -e linux_native_test -f {name}", "restore_configs", ], title = "Marlin: {}".format(name.lower().title().replace("_", " ")), description = ( f"Run a Marlin test suite, with the appropriate configuration, " f"that sits in {path}" ) ) env.AddCustomTarget( name = "test-marlin", dependencies = None, actions = [ f"platformio run -t marlin_{name} -e linux_native_test" for name in targets ], title = "Marlin: Test all code test suites", description = ( f"Run all Marlin code test suites ({len(targets)} found)." ), ) register_test_suites()