A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)
Go to file
Reinhold Gschweicher 2375a7f5b7 Fix Catch.cmake helper by setting variable globally
Set `_CATCH_DISCOVER_TESTS_SCRIPT` helper variable globally. Otherwise in a
scoped call (like `add_subdirectory()`) the variable gets lost. This lost
variable results in a post build error with not much information to lead to the
root of the problem.

This enables the usage of the helper script with the following example structure

- CMakeLists.txt (project root with `add_subdirectory(external/catch2)`
- external/catch2
  - CMakeLists.txt (contents listed below)
  - contrib/Catch.cmake
  - contrib/CatchAddTests.cmake
  - catch2/catch.hpp
- tests
  - CMakeLists.txt (add tests with `catch_discover_tests(${PROJECT_NAME})`)

contents of project specific helper `external/catch2/CMakeLists.txt`
```cmake
cmake_minimum_required (VERSION 3.1...${CMAKE_VERSION})
project(Catch2 LANGUAGES CXX VERSION 2.13.3)
add_library(Catch2 INTERFACE)
target_include_directories(Catch2
  INTERFACE
    $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
)
 # provide a namespaced alias for clients to 'link' against if catch is included as a sub-project
add_library(Catch2::Catch2 ALIAS Catch2)
include(contrib/Catch.cmake)
```
2020-12-17 18:50:04 +01:00
.conan Upload conan releases to catch2 remote (instead of Catch2) 2020-05-06 20:49:26 +02:00
.github Update FUNDING file (-Patreon, +PayPal) 2020-07-04 20:06:27 +02:00
artwork Optimize in-repo PNGs 2019-09-06 12:12:47 +02:00
CMake Fix typos identified by codespell. 2019-04-10 09:42:11 +02:00
contrib Fix Catch.cmake helper by setting variable globally 2020-12-17 18:50:04 +01:00
docs Add bazel support 2020-11-18 21:37:12 +01:00
examples Replace a TODO comment in examples 2020-06-26 20:04:05 +02:00
include Small cleanups for the reworked test case order hashing 2020-11-17 21:08:33 +01:00
misc Fix escaping of quotes in coverage helper 2019-09-21 23:19:45 +02:00
projects Fix potential infinite loops in generators combined with section filter 2020-10-31 18:04:15 +01:00
scripts Stop uploading new releases to wandbox 2020-10-31 18:21:00 +01:00
single_include/catch2 v2.13.3 2020-10-31 18:21:23 +01:00
src Add the static library Catch2WithMain 2020-11-18 21:37:10 +01:00
third_party fixing UB 2020-05-29 14:56:40 +02:00
.clang-format Clang-format configuration added. 2020-06-19 09:49:10 +02:00
.gitattributes Update gitattributes 2018-07-23 10:15:52 +02:00
.gitignore Create a BUILD file for compatibility with bazel 2020-05-17 13:18:22 +02:00
.travis.yml Do not explicitly install conan 2019-10-03 00:00:17 +02:00
appveyor.yml Use newer version of Python on AppVeyor 2019-11-13 20:58:15 +01:00
BUILD.bazel Add bazel support 2020-11-18 21:37:12 +01:00
CMakeLists.txt Fix conan package build 2020-11-26 15:05:58 +01:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2017-08-17 07:45:12 +01:00
codecov.yml Fix bunch of links to master to point to v2.x branch 2020-10-21 15:30:35 +02:00
conanfile.py Fix conan package build 2020-11-26 15:05:58 +01:00
LICENSE.txt Renamed licence file, license should now be detected by github 2017-03-20 08:59:25 +01:00
README.md v2.13.3 2020-10-31 18:21:23 +01:00
WORKSPACE Create a BUILD file for compatibility with bazel 2020-05-17 13:18:22 +02:00

catch logo

Github Releases Build Status Build status codecov Try online Join the chat in Discord: https://discord.gg/4CWS9zD

The latest version of the single header can be downloaded directly using this link

Catch2 is released!

If you've been using an earlier version of Catch, please see the Breaking Changes section of the release notes before moving to Catch2. You might also like to read this blog post for more details.

What's the Catch?

Catch2 is a multi-paradigm test framework for C++. which also supports Objective-C (and maybe C). It is primarily distributed as a single header file, although certain extensions may require additional headers.

How to use it

This documentation comprises these three parts:

More