[CMake] Re: [Dart] CMake & Dart2 general design question
Andy Cedilnik
andy.cedilnik at kitware.com
Tue Jun 14 12:03:14 EDT 2005
Hi Anton,
Why don't you include intermediate file that includes all the others?
Andy
Anton Deguet wrote:
>Hi Andy,
>
>Sorry to bug you again with this issue but I ran into a new problem. Is
>it possible to add two or more INCLUDE() in a given DartTestfile.txt? I
>have a directory with a CMake loop and for each iteration I generate a
>test list. I can't figure out how to compile the list of files and use
>it with SET_DIRECTORY_PROPERTIES.
>
>I tried:
>FOREACH()
> SET(MY_LIST ${MY_LIST} newFile.txt)
>ENDFOREACH()
>
>SET_DIRECTORY_PROPERTIES(PROPERTIES TEST_INCLUDE_FILE ${MY_LIST})
>
>I tried different variations but without success. Any clue?
>
>Anton
>
>
>On Tue, 2005-06-07 at 10:27, Andy Cedilnik wrote:
>
>
>>Hi Anton,
>>
>>Great. Thanks for testing it.
>>
>> Andy
>>
>>Anton Deguet wrote:
>>
>>
>>
>>>Hi Andy
>>>
>>>I tested it and it works. The default DartTestfile.txt now has a
>>>INCLUDE() for the file I generated. The only difference with your
>>>example is that I use a post-build command to generate the list of
>>>tests. We use CppUnit to write our test programs and the list of known
>>>tests is embedded in the code. The only simple way to know which tests
>>>have been implemented is to run the test program itself with a "--list"
>>>option. We added "--dart [-d]" to generate a Dart compatible output.
>>>
>>>Since we do that for a many libraries, I created a CMake macro:
>>>MACRO(CISST_ADD_TESTS testProgram)
>>> ADD_CUSTOM_COMMAND(TARGET ${testProgram}
>>> POST_BUILD
>>> COMMAND ${EXECUTABLE_OUTPUT_PATH}/${testProgram}
>>> ARGS -d >
>>>${CMAKE_CURRENT_BINARY_DIR}/DartTestfile-${testProgram}.txt
>>> COMMENT "Generating
>>>DartTestfile-${testProgram}.txt")
>>>
>>> SET_DIRECTORY_PROPERTIES(PROPERTIES TEST_INCLUDE_FILE
>>>
>>>"${CMAKE_CURRENT_BINARY_DIR}/DartTestfile-${testProgram}.txt")
>>>
>>>ENDMACRO(CISST_ADD_TESTS)
>>>
>>>
>>>I can now do:
>>>make clean
>>>make
>>>make test
>>>ctest -V -D Experimental
>>>
>>>And everything works as expected. Thanks a lot.
>>>
>>>Anton
>>>
>>>
>>>
>>>On Tue, 2005-06-07 at 10:01, Andy Cedilnik wrote:
>>>
>>>
>>>
>>>
>>>>Hi Anton,
>>>>
>>>>The feature is in.
>>>>
>>>>There is example in kwsys (CTestTest).
>>>>
>>>>The idea is:
>>>>
>>>>Create a cmake file, let say ExtraTest.cmake.in and put in whatever code
>>>>you want.
>>>>Then use configure command to process any options that you need in that
>>>>file.
>>>>
>>>> CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/ExtraTest.cmake.in"
>>>> "${CMAKE_CURRENT_BINARY_DIR}/ExtraTest.cmake")
>>>>
>>>>Now, add the following command:
>>>>
>>>> SET_DIRECTORY_PROPERTIES(PROPERTIES TEST_INCLUDE_FILE
>>>> "${CMAKE_CURRENT_BINARY_DIR}/ExtraTest.cmake")
>>>>
>>>>Please test if it works for your case.
>>>>
>>>>Thank you.
>>>>
>>>> Andy
>>>>
>>>>Andy Cedilnik wrote:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>Hi Anton,
>>>>>
>>>>>I will add similar feature to CMake. The feature will be to include a
>>>>>file in CTest input file. This way you will be able to generate this
>>>>>file at any point in time.
>>>>>
>>>>> Andy
>>>>>
>>>>>Anton Deguet wrote:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>Hi Andy,
>>>>>>
>>>>>>I am pretty happy to report that my idea works ... somewhat. I believe
>>>>>>this is because our tree is pretty simple and I only overwrite the
>>>>>>DartTestfile.txt in the leaves:
>>>>>>
>>>>>>main
>>>>>>+- lib1
>>>>>>+- lib2
>>>>>>
>>>>>>In the main directory, CMakeLists.txt contains:
>>>>>>
>>>>>>ENABLE_TESTING()
>>>>>>INCLUDE(Dart)
>>>>>>
>>>>>>SET (DROP_METHOD "xmlrpc")
>>>>>>SET (DROP_SITE "http://myserver.net:8081")
>>>>>>SET (DROP_LOCATION "cisst")
>>>>>>SET (COMPRESS_SUBMISSION ON)
>>>>>>
>>>>>>MACRO(CISST_ADD_TESTS testProgram)
>>>>>>ADD_CUSTOM_COMMAND(TARGET ${testProgram}
>>>>>> POST_BUILD
>>>>>> COMMAND ${EXECUTABLE_OUTPUT_PATH}/${testProgram}
>>>>>> ARGS -d
>>>>>>${CMAKE_CURRENT_BINARY_DIR}/DartTestfile.txt
>>>>>> COMMENT "Generating DartTestfile.txt")
>>>>>>ENDMACRO(CISST_ADD_TESTS)
>>>>>>
>>>>>>Then, in each lib, I compile a single test program and use the macro
>>>>>>defined above:
>>>>>>
>>>>>>ADD_EXECUTABLE(cisstCommonTests ${SOURCE_FILES} ${HEADER_FILES})
>>>>>>
>>>>>>CISST_ADD_TESTS(cisstCommonTests)
>>>>>>
>>>>>>This works very well with:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>make clean (optional)
>>>>>>>make
>>>>>>>make test
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>The issue with ctest is that is will always "Configure" and overwrite
>>>>>>the my DartTestfile.txt generated by the post build command. Then I get
>>>>>>an empty list of tests. I tried the option "--build-nocmake" but
>>>>>>without any luck. So, this works:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>make clean
>>>>>>>ctest -V -D Experimental
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>But this won't:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>make clean
>>>>>>>make
>>>>>>>ctest --build-nocmake -V -D Experimental
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>It all make sense, but it would be nice to have an option for ctest to
>>>>>>not regenerate the DartTestfile.txt or at least regenerate only when
>>>>>>needed (based on changes in CMakeLists.txt or timestamps). The second
>>>>>>option would probably work for me since it would also trigger the
>>>>>>rebuilt and my post build custom command.
>>>>>>
>>>>>>Anton
>>>>>>
>>>>>>
>>>>>>On Thu, 2005-06-02 at 09:33, Andy Cedilnik wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>Hi Anton,
>>>>>>>
>>>>>>>If you are using CMake, then you will have to know the test names while
>>>>>>>writing CMakeLists files.
>>>>>>>
>>>>>>>I am working on a feature where tests could be added dynamically while
>>>>>>>running ctest.
>>>>>>>
>>>>>>>What you suggested might work, but there may be problems with the way
>>>>>>>DartTestfile.txt files are traversed.
>>>>>>>
>>>>>>> Andy
>>>>>>>
>>>>>>>Anton Deguet wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>Hello,
>>>>>>>>
>>>>>>>>Now that I have the basics working, I am looking at a way to integrate
>>>>>>>>our existing test programs with CMake and Dart2.
>>>>>>>>
>>>>>>>>We have been using CppUnit and PyUnit for a while to test our libraries
>>>>>>>>and their SWIG Python wrappers counter-parts. Our tests are aggregated
>>>>>>>>in one single executable per library: testProgram. Then we can use:
>>>>>>>>
>>>>>>>>-1- "testProgram -r" run all tests
>>>>>>>>-2- "testProgram -l" list available tests
>>>>>>>>-3- "testProgram -r -t oneSpecificTest" to run one test
>>>>>>>>
>>>>>>>>I would like to have an entry in the dashboard for each test. To do so,
>>>>>>>>I though that I could:
>>>>>>>>
>>>>>>>>-1- compile testProgram (ADD_EXECUTABLE() as I already do)
>>>>>>>>-2- in a post build command, run "testProgram -d" which would produce
>>>>>>>>its own "DartTestfile.txt" with an "ADD_TEST(testName testProgram -r -t
>>>>>>>>testName)" for each available test.
>>>>>>>>-3- Run the tests with ctests
>>>>>>>>
>>>>>>>>Is this the right way to go or is there a more orthodox approach?
>>>>>>>>
>>>>>>>>Anton
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
--
Andy Cedilnik
Kitware Inc.
More information about the CMake
mailing list