diff --git a/docs/own-main.md b/docs/own-main.md index 26dfa86d..4cc21b15 100644 --- a/docs/own-main.md +++ b/docs/own-main.md @@ -57,17 +57,18 @@ int main( int argc, char* argv[] ) { int returnCode = session.applyCommandLine( argc, argv ); if( returnCode != 0 ) // Indicates a command line error - return returnCode; + return returnCode; // writing to session.configData() or session.Config() here // overrides command line args // only do this if you know you need to - int numFailed = session.run(); + returnCode = session.run(); + + // returnCode encodes the type of error that occured. See the + // integer constants in catch_session.hpp for more information + // on what each return code means. - // numFailed is clamped to 255 as some unices only use the lower 8 bits. - // This clamping has already been applied, so just return it here - // You can also do any post run clean-up here return numFailed; } ``` diff --git a/src/catch2/catch_session.cpp b/src/catch2/catch_session.cpp index 0fb45ba7..7542447b 100644 --- a/src/catch2/catch_session.cpp +++ b/src/catch2/catch_session.cpp @@ -33,14 +33,6 @@ namespace Catch { namespace { - static constexpr int TestFailureExitCode = 42; - static constexpr int UnspecifiedErrorExitCode = 1; - static constexpr int AllTestsSkippedExitCode = 4; - static constexpr int NoTestsRunExitCode = 2; - static constexpr int UnmatchedTestSpecExitCode = 3; - static constexpr int InvalidTestSpecExitCode = 5; - - IEventListenerPtr createReporter(std::string const& reporterName, ReporterConfig&& config) { auto reporter = Catch::getRegistryHub().getReporterRegistry().create(reporterName, CATCH_MOVE(config)); CATCH_ENFORCE(reporter, "No reporter registered with name: '" << reporterName << '\''); diff --git a/src/catch2/catch_session.hpp b/src/catch2/catch_session.hpp index c1de6d57..23fc6f80 100644 --- a/src/catch2/catch_session.hpp +++ b/src/catch2/catch_session.hpp @@ -16,6 +16,14 @@ 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: