mirror of
https://github.com/parchlinux/calamares.git
synced 2025-06-17 21:04:31 -04:00
CMake: if pylint is available, run it as part of the test-suite
This introduces a stub-implementation (fake) that mimics the API offered by libcalamares (the library is actually exposed to Python via Boost::Python, so it doesn't act like a C-extension). Using that stub-implementation, we can check Python modules for validity as part of the test-suite. The stub-implementation is needed, because otherwise every Python module already fails at `import libcalamares`. - stub-implement the API that is actually used by the Python modules - in globalstorage, be slightly smart about what keys are being requested (so that e.g. all the modules that handle partitions information get an empty list and can manipulate that, instead of erroring out when they get a string)
This commit is contained in:
parent
836ea55dbd
commit
719548213f
4 changed files with 50 additions and 2 deletions
|
@ -42,6 +42,18 @@ include( CalamaresCheckModuleSelection )
|
|||
|
||||
set( MODULE_DATA_DESTINATION share/calamares/modules )
|
||||
|
||||
# We look for Pylint (just once) so that unittests can be added that
|
||||
# check the syntax / variables of Python modules. This should help
|
||||
# avoid more typo's-in-releases.
|
||||
if(BUILD_TESTING AND NOT PYLINT_COMMAND_SEARCHED)
|
||||
set(PYLINT_COMMAND_SEARCHED TRUE)
|
||||
find_program(
|
||||
PYLINT_COMMAND
|
||||
NAMES pylint3 pylint
|
||||
PATHS $ENV{HOME}/.local/bin
|
||||
)
|
||||
endif()
|
||||
|
||||
function( _calamares_add_module_subdirectory_impl )
|
||||
set( SUBDIRECTORY ${ARGV0} )
|
||||
|
||||
|
@ -241,6 +253,19 @@ function( _calamares_add_module_subdirectory_impl )
|
|||
if ( EXISTS ${_testdir}/CMakeTests.txt AND NOT EXISTS ${_mod_dir}/CMakeLists.txt )
|
||||
include( ${_testdir}/CMakeTests.txt )
|
||||
endif()
|
||||
if ( PYLINT_COMMAND AND MODULE_INTERFACE MATCHES "python" )
|
||||
# Python modules get an additional test via pylint; this
|
||||
# needs to run at top-level because the ci/libcalamares directory
|
||||
# contains API stubs.
|
||||
#
|
||||
# TODO: the entry point is assumed to be `main.py`, but that is
|
||||
# configurable through module.desc
|
||||
add_test(
|
||||
NAME lint-${SUBDIRECTORY}
|
||||
COMMAND env PYTHONPATH=ci: ${PYLINT_COMMAND} -E ${_mod_dir}/main.py
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue