[cmake-developers] Error handling in dashboard scripts
Shawn Waldon
shawn.waldon at kitware.com
Wed May 30 10:59:19 EDT 2018
> The documentation for ctest_configure(), ctest_build(), and ctest_submit()
> isn't completely clear on what happens if one of these steps fails. Let's
> say I have the following dashboard script (this is pseudocode, arguments
> have been deliberately omitted for brevity, this example won't work):
>
> ctest_start()
> ctest_configure()
> ctest_build()
> ctest_test()
> ctest_submit()
>
> What happens if ctest_configure() fails (for example, because CMake failed
> to find a needed library)? Does the entire script stop right there? Or does
> it continue and try to execute ctest_build() anyway? Does ctest_build()
> silently do nothing because the configure step failed? Looking through the
> documentation for ctest_configure() and ctest_build(), I see some
> information on the RETURN_VALUE and CAPTURE_CMAKE_ERROR arguments, but it's
> not clear what happens if these aren't used.
>
> If someone could clarify for me what's supposed to happen here, and what
> the recommended best practices are for making sure that ctest_submit()
> still gets called in the event of a failure, I will gladly submit a
> documentation patch with this information. I'm guessing it involves using
> the RETURN_VALUE and CAPTURE_CMAKE_ERROR arguments, but the documentation
> doesn't state this.
>
In our VTK/ParaView dashboards we ensure the submit happens by doing
partial submissions after each stage (this also gives incremental results
on CDash):
set(success TRUE)
ctest_configure(RETURN_VALUE configure_result)
ctest_submit(PARTS Configure) # Tell submit to submit a partial result with
only the configure step
if (configure_result)
message("Configure failed")
set(success FALSE)
# you could exit here
endif()
if (success)
... # run next stage here
HTH,
Shawn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake-developers/attachments/20180530/a7346997/attachment.html>
More information about the cmake-developers
mailing list