Since commit 880ca66b51 (Fix: `while()` can silently ignore incorrect
condition, 2021-08-09, v3.22.0-rc1~238^2~4) we correctly reject the
code
set(paren "(")
while(${paren})
endwhile()
However, rejecting it breaks compatibility with projects that used such
code accidentally. In CMake 3.21 and below, any error in the condition
was ignored because the `false` result exited the loop first. Restore
tolerance of the error for now. A policy will be needed to make it an
error later.
Note that the same condition with `if` was always correctly rejected.
Fixes: #22524
Issue: #23296
Co-authored-by: Brad King <brad.king@kitware.com>
CMake Tests Directory
*********************
This directory contains the CMake test suite.
See also the `CMake Source Code Guide`_.
.. _`CMake Source Code Guide`: ../Help/dev/source.rst
Many tests exist as immediate subdirectories, but some tests
are organized as follows.
* ``CMakeLib/``:
Source code, used for tests, that links to the ``CMakeLib`` library
defined over in ``Source/``.
* ``CMakeOnly/``:
Deprecated. Tests that run CMake to generate a project but not build it.
Superseded by ``Tests/RunCMake/``.
* ``Find*/``:
Tests for specific find modules that can only be run on machines with
the corresponding packages installed. They are enabled in
``CMakeLists.txt`` by undocumented options used on CI builds.
* ``Module/``:
Tests for specific CMake modules.
* ``RunCMake/``:
Tests that run CMake and/or other tools while precisely checking
their return code and stdout/stderr content. Useful for testing
error cases and diagnostic output.