[CMake] [CTest] ADD_TEST and working directory
Mathieu Malaterre
mathieu.malaterre at gmail.com
Thu Apr 26 11:36:48 EDT 2007
On 4/26/07, Bill Hoffman <bill.hoffman at kitware.com> wrote:
> Mathieu Malaterre wrote:
> > Hello,
> >
> > According to cmake documentation, ADD_TEST will always execute a test:
> >
> > The test will be run with the current
> > working directory set to the CMakeList.txt files corresponding
> > directory in the binary tree.
> >
> > In my case I need to load a python module, I decided to try
> > something very simple:
> >
> > #1, setting the PYTHONPATH on the same line as the python executable:
> >
> > SET(myenv "PYTHONPATH=${LIBRARY_OUTPUT_PATH}")
> > SET(my_test "from test_mymodule import *\;test_mymodule()")
> > ADD_TEST(PYTHON-TEST-MYMODULE ${myenv} python -c ${my_test})
> >
> > unfortunately ctest expect the first argument to be an executable.
> >
> > #2
> > I then tried setting properly the env var by doing:
> >
> > SET(ENV{PYTHONPATH} ${LIBRARY_OUTPUT_PATH})
> > SET(my_test "from test_mymodule import *\;test_mymodule()")
> > ADD_TEST(PYTHON-TEST-MYMODULE python -c ${my_test})
> >
> > still no luck. The test does not seems to be running correctly.
> >
> > Anything else to be able to automate this simple test ?
> >
> > Thanks for suggestion,
> >
> Make the test a cmake script that runs python. cmake -P myscript.cmake.
sweet ! I just found out how to return the value of a cmake script
back to ADD_TEST:
MACRO(TEST command expected)
IF("x${result}" STREQUAL "x${expected}")
#MESSAGE("TEST \"${command}\" success: \"${result}\" expected:
\"${expected}\"")
ELSE("x${result}" STREQUAL "x${expected}")
MESSAGE(SEND_ERROR "${CMAKE_CURRENT_LIST_LINE}: TEST
\"${command}\" failed: \"${result}\" expected: \"${expected}\"")
ENDIF("x${result}" STREQUAL "x${expected}")
ENDMACRO(TEST command expected)
MESSAGE(SEND_ERROR was the key.
thanks bill !
-Mathieu
More information about the CMake
mailing list