| |
| // Copyright Catch2 Authors |
| // Distributed under the Boost Software License, Version 1.0. |
| // (See accompanying file LICENSE.txt or copy at |
| // https://www.boost.org/LICENSE_1_0.txt) |
| |
| // SPDX-License-Identifier: BSL-1.0 |
| #ifndef CATCH_SESSION_HPP_INCLUDED |
| #define CATCH_SESSION_HPP_INCLUDED |
| |
| #include <catch2/internal/catch_commandline.hpp> |
| #include <catch2/internal/catch_noncopyable.hpp> |
| #include <catch2/catch_config.hpp> |
| #include <catch2/internal/catch_unique_ptr.hpp> |
| #include <catch2/internal/catch_config_wchar.hpp> |
| |
| namespace Catch { |
| |
| // TODO: Use C++17 `inline` variables |
| constexpr int UnspecifiedErrorExitCode = 1; |
| constexpr int NoTestsRunExitCode = 2; |
| constexpr int UnmatchedTestSpecExitCode = 3; |
| constexpr int AllTestsSkippedExitCode = 4; |
| constexpr int InvalidTestSpecExitCode = 5; |
| constexpr int TestFailureExitCode = 42; |
| |
| class Session : Detail::NonCopyable { |
| public: |
| |
| Session(); |
| ~Session(); |
| |
| void showHelp() const; |
| void libIdentify(); |
| |
| int applyCommandLine( int argc, char const * const * argv ); |
| #if defined(CATCH_CONFIG_WCHAR) && defined(_WIN32) && defined(UNICODE) |
| int applyCommandLine( int argc, wchar_t const * const * argv ); |
| #endif |
| |
| void useConfigData( ConfigData const& configData ); |
| |
| template<typename CharT> |
| int run(int argc, CharT const * const argv[]) { |
| if (m_startupExceptions) |
| return 1; |
| int returnCode = applyCommandLine(argc, argv); |
| if (returnCode == 0) |
| returnCode = run(); |
| return returnCode; |
| } |
| |
| int run(); |
| |
| Clara::Parser const& cli() const; |
| void cli( Clara::Parser const& newParser ); |
| ConfigData& configData(); |
| Config& config(); |
| private: |
| int runInternal(); |
| |
| Clara::Parser m_cli; |
| ConfigData m_configData; |
| Detail::unique_ptr<Config> m_config; |
| bool m_startupExceptions = false; |
| }; |
| |
| } // end namespace Catch |
| |
| #endif // CATCH_SESSION_HPP_INCLUDED |