View Revisions: Issue #4242

Summary 0004242: Testing of scripted module that depend on loadable module fails
Revision 2018-05-30 12:28 by lassoan
Steps To Reproduce

This fails (for example in https://app.assembla.com/spaces/slicerrt/subversion/source/HEAD/trunk/SlicerRt/src/DicomRtImportExport/Testing/Python/CMakeLists.txt):

<pre>
slicerMacroBuildScriptedModule(
NAME ${MODULE_NAME}
SCRIPTS ${MODULE_PYTHON_SCRIPTS}
RESOURCES ${MODULE_PYTHON_RESOURCES}
WITH_GENERIC_TESTS
)
</pre>

The problem seems to be that although the correct paths are stored in AdditionalLauncherSettings.ini in [LibraryPaths], they are not used as additional module paths.

This workaround makes the test pass:

<pre>
#-----------------------------------------------------------------------------
slicerMacroBuildScriptedModule(
NAME ${MODULE_NAME}
SCRIPTS ${MODULE_PYTHON_SCRIPTS}
RESOURCES ${MODULE_PYTHON_RESOURCES}

WITH_GENERIC_TESTS

)

#-----------------------------------------------------------------------------
if(CMAKE_CONFIGURATION_TYPES)
set(MODULE_BUILD_DIR "")
foreach(config ${CMAKE_CONFIGURATION_TYPES})
list(APPEND MODULE_BUILD_DIR "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_LIB_DIR}/${config}")
endforeach()
else()
set(MODULE_BUILD_DIR "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_LIB_DIR}")
endif()

Register the unittest subclass in the main script as a ctest.

Note that the test will also be available at runtime.

slicer_add_python_unittest(
SCRIPT ${MODULE_NAME}.py

TODO: slicer_add_python_unittest should take care of adding the additional module paths

SLICER_ARGS
--disable-cli-modules
--additional-module-paths ${MODULE_BUILD_DIR} ${CMAKE_BINARY_DIR}/${Slicer_QTSCRIPTEDMODULES_LIB_DIR}
)
</pre>

Revision 2016-08-04 18:52 by lassoan
Steps To Reproduce

This fails (for example in https://app.assembla.com/spaces/slicerrt/subversion/source/HEAD/trunk/SlicerRt/src/DicomRtImportExport/Testing/Python/CMakeLists.txt):

slicerMacroBuildScriptedModule(
NAME ${MODULE_NAME}
SCRIPTS ${MODULE_PYTHON_SCRIPTS}
RESOURCES ${MODULE_PYTHON_RESOURCES}
WITH_GENERIC_TESTS
)

The problem seems to be that although the correct paths are stored in AdditionalLauncherSettings.ini in [LibraryPaths], they are not used as additional module paths.

This workaround makes the test pass:

#-----------------------------------------------------------------------------
slicerMacroBuildScriptedModule(
NAME ${MODULE_NAME}
SCRIPTS ${MODULE_PYTHON_SCRIPTS}
RESOURCES ${MODULE_PYTHON_RESOURCES}

WITH_GENERIC_TESTS

)

#-----------------------------------------------------------------------------
if(CMAKE_CONFIGURATION_TYPES)
set(MODULE_BUILD_DIR "")
foreach(config ${CMAKE_CONFIGURATION_TYPES})
list(APPEND MODULE_BUILD_DIR "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_LIB_DIR}/${config}")
endforeach()
else()
set(MODULE_BUILD_DIR "${CMAKE_BINARY_DIR}/${Slicer_QTLOADABLEMODULES_LIB_DIR}")
endif()

Register the unittest subclass in the main script as a ctest.

Note that the test will also be available at runtime.

slicer_add_python_unittest(
SCRIPT ${MODULE_NAME}.py

TODO: slicer_add_python_unittest should take care of adding the additional module paths

SLICER_ARGS
--disable-cli-modules
--additional-module-paths ${MODULE_BUILD_DIR} ${CMAKE_BINARY_DIR}/${Slicer_QTSCRIPTEDMODULES_LIB_DIR}
)