Previously we only printed explicit `RunCMake_TEST_COMMAND` cases on
failure. Refactor the RunCMake infrastructure so that we always define
`RunCMake_TEST_COMMAND` internally, and print it on failure.
Upstream ninja commit `ad3d29fb53` (Put builder output through status
interface) from ninja PR 1899 changed the status output from stdout to
stderr. In particular, `ninja: no work to do` is now printed on stderr.
Update our RunCMake tests to accept this difference.
A few RunCMake test cases check for `ninja: no work to do`. For those,
move the message to stdout using `RunCMake_TEST_OUTPUT_MERGE`. The rest
of the test cases do not care about the message, so remove it from the
actual stderr content before comparing against that expected.
The `install_name_tool` may warn:
install_name_tool: warning: changes being made to the file will
invalidate the code signature in: ...
Teach RunCMake to drop such incidental lines before matching against
expected output.
Xcode on Apple Silicon warns:
objc[...]: Class AMSupportURL... is implemented in both ...
One of the two will be used. Which one is undefined.
Teach RunCMake to drop such lines before matching against expected
output.
The Xcode 12 (Beta) toolchain for arm64 emits a warning when static
libraries are created:
```
ranlib: archive member: libStaticLib.a(a.c.o) offset in archive not a multiple of 8 (must be since member is an 64-bit object file)
```
Due to the unexpected output multiple tests are broken. To make those
tests pass we filter the problematic output in the test driver.
See: https://developer.apple.com/forums/thread/652620
* Added a fairly comprehensive test suite
* Separated the graph traversal logic from the Graphviz generation
code by introducing a new class, cmLinkItemsGraphVisitor{.h,cxx}
* Made the graph traversal logic less ad-hoc by using existing
methods in the GlobalGenerator; this fixed a few bugs
* Added support for new target types: custom targets, object
and unknown libraries
* Improved support for ALIAS libraries by showing the alias(es)
in the graph
* Introduced new flags to control those new libraries (consistent
with existing flags)
* Updated the documentation
* Removed useless setting to set graph type in dot file
* Improved the node/edge shapes (nicer, more consistent)
* Added a legend to the graph
* Some refactoring and cleanup of the Graphviz generation code
* Added test and fix for issue 19746
Resolve conflicts with changes since the 3.15 series:
* Convert `cmSystemTools::IsOn` => `cmIsOn`.
* Move one "EXCLUDE_FROM_ALL" target property logic fix to
its new location in `cmMakefile::AddNewUtilityTarget`.
Drop the filtering added by commit e22c45d4c9 (Tests: Teach RunCMake to
ignore AIX ld warnings about GNU atexit, 2018-02-28, v3.12.0-rc1~419^2~6).
It is no longer needed now that we compute our own exports on AIX and
do not get these warnings when using shared libraries.
This environment variable allows developers to locally run only a
subset of RunCMake subtests in a single RunCMakeTest.cmake script.
If the environment variable is not set, all of the tests in the
script are run.
Xcode 10 beta warns
xcodebuild... warning: file type '::com.apple.instruments.instrdst'
is based on missing file type 'default::com.apple.package'
Teach RunCMake to drop such lines before matching against expected
output.
Add cache entry `CMAKE_GENERATOR_INSTANCE` to hold the instance location
persistently across re-runs of CMake in a given build tree.
For now we reject the option by default if explicitly set. It will be
implemented on a per-generator basis. Pass the setting into try_compile
project generation. Add a RunCMake.GeneratorInstance test to cover
basic use cases for the option. Verify that `CMAKE_GENERATOR_INSTANCE`
is empty by default, and that it is rejected when the generator does not
support a user setting.
Issue: #17268
Encountered on OS X 10.4 with old Xcode:
Expected stderr to match:
expect-err> ^$
Actual stderr:
actual-err> Hit xcodebuild bug : ... bad interpreter: Text file busy
When testing under Bullseye coverage, some tests get lines on stderr of
the form:
... Bullseye Testing Technology ...
Remove such lines from output before matching because they are not
representative of the actual test output.
On some OS X machines some tests get lines on stderr of the form:
... attempting to exclude an item from Time Machine by path ...
produced by the system. Remove such lines from output before matching
because they are not representative of the actual test output.
Some tests may need to read "cmake --build" output passed through from
native build tools and do not know if it will be on stdout or stderr.
Optionally use the same variable for the execute_process output so
that it merges them and we can always match using expected stdout.
When RunCMake tests run on Solaris, the output may contain unexpected
lines of the form "Error kstat returned...". These lines are printed by
SystemInformationImplementation::RunProcess when called from
SystemInformationImplementation::ParseValueFromKStat (see issue #12066).
Until someone investigates why kstat returns values outside the range it
documents, simply remove such lines from the actual output before
matching it against the expected output.
When RunCMake tests run under Xcode Guard Malloc, Guard Malloc may add
lines of the form "<tool>(<pid>) malloc:..." to the output. Remove such
lines from the actual output before matching it against the expected
output.