FindSquish¶
Finds Squish, a cross-platform automated GUI testing framework for applications built on various GUI technologies. Squish supports testing of both native and cross-platform toolkits, such as Qt, Java, and Tk.
Result Variables¶
This module defines the following variables:
Squish_FOUND
Boolean indicating whether the (requested version of) Squish is found. For backward compatibility, the
SQUISH_FOUND
variable is also set to the same value.SQUISH_VERSION
The full version of the Squish found.
SQUISH_VERSION_MAJOR
The major version of the Squish found.
SQUISH_VERSION_MINOR
The minor version of the Squish found.
SQUISH_VERSION_PATCH
The patch version of the Squish found.
SQUISH_INSTALL_DIR_FOUND
Boolean indicating whether the Squish installation directory is found.
SQUISH_SERVER_EXECUTABLE_FOUND
Boolean indicating whether the Squish server executable is found.
SQUISH_CLIENT_EXECUTABLE_FOUND
Boolean indicating whether the Squish client executable is found.
Cache Variables¶
The following cache variables may also be set:
SQUISH_INSTALL_DIR
The Squish installation directory containing
bin
,lib
, etc.SQUISH_SERVER_EXECUTABLE
The path to the
squishserver
executable.SQUISH_CLIENT_EXECUTABLE
The path to the
squishrunner
executable.
Commands¶
This module provides the following commands, if Squish is found:
- squish_add_test¶
Adds a Squish test to the project:
squish_add_test( <name> AUT <target> SUITE <suite-name> TEST <squish-test-case-name> [PRE_COMMAND <command>] [POST_COMMAND <command>] [SETTINGSGROUP <group>] )
This command is built on top of the
add_test()
command and adds a Squish test called<name>
to the CMake project. It supports Squish versions 4 and newer.During the CMake testing phase, the Squish server is started, the test is executed on the client, and the server is stopped once the test completes. If any of these steps fail (including if the test itself fails), a fatal error is raised indicating the test did not pass.
The arguments are:
<name>
The name of the test. This is passed as the first argument to the
add_test()
command.AUT <target>
The name of the CMake target to be used as the AUT (Application Under Test), i.e., the executable that will be tested.
SUITE <suite-name>
Either the full path to the Squish test suite or just the suite name (i.e., the last directory name of the suite). In the latter case, the
CMakeLists.txt
invokingsquish_add_test()
must reside in the parent directory of the suite.TEST <squish-test-case-name>
The name of the Squish test, corresponding to the subdirectory of the test within the suite directory.
PRE_COMMAND <command>
An optional command to execute before starting the Squish test. Pass it as a string. This may be a single command, or a semicolon-separated list of command and arguments.
POST_COMMAND <command>
An optional command to execute after the Squish test has completed. Pass it as a string. This may be a single command, or a semicolon-separated list of command and arguments.
SETTINGSGROUP <group>
Deprecated since version 3.18: This argument is now ignored. It was previously used to specify a settings group name for executing the test instead of the default value
CTest_<username>
.
Changed in version 3.18: In previous CMake versions, this command was named
squish_v4_add_test()
.
- squish_v3_add_test¶
Adds a Squish test to the project, when using Squish version 3.x:
squish_v3_add_test( <test-name> <application-under-test> <squish-test-case-name> <environment-variables> <test-wrapper> )
Note
This command is for Squish version 3, which is not maintained anymore. Use a newer Squish version, and
squish_add_test()
command.The arguments are:
<name>
The name of the test.
<application-under-test>
The path to the executable used as the AUT (Application Under Test), i.e., the executable that will be tested.
<squish-test-case-name>
The name of the Squish test, corresponding to the subdirectory of the test within the suite directory.
<environment-variables>
A semicolon-separated list of environment variables and their values (VAR=VALUE).
<test-wrapper>
A string of one or more (semicolon-separated list) test wrappers needed by the test case.
Examples¶
Finding Squish and specifying a minimum required version:
find_package(Squish 6.5)
Adding a Squish test:
enable_testing()
find_package(Squish 6.5)
if(Squish_FOUND)
squish_add_test(
projectTestName
AUT projectApp
SUITE ${CMAKE_CURRENT_SOURCE_DIR}/tests/projectSuite
TEST someSquishTest
)
endif()
Example, how to use the squish_v3_add_test()
command:
enable_testing()
find_package(Squish 3.0)
if(Squish_FOUND)
squish_v3_add_test(
projectTestName
$<TARGET_FILE:projectApp>
someSquishTest
"FOO=1;BAR=2"
testWrapper
)
endif()