1 /* 2 * Created by Phil on 31/10/2010. 3 * Copyright 2010 Two Blue Cubes Ltd. All rights reserved. 4 * 5 * Distributed under the Boost Software License, Version 1.0. (See accompanying 6 * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 7 */ 8 #ifndef TWOBLUECUBES_CATCH_RUNNER_HPP_INCLUDED 9 #define TWOBLUECUBES_CATCH_RUNNER_HPP_INCLUDED 10 11 #include "catch_commandline.h" 12 #include "catch_config.hpp" 13 #include "catch_text.h" 14 15 #include <memory> 16 17 namespace Catch { 18 19 class Session : NonCopyable { 20 public: 21 22 Session(); 23 ~Session() override; 24 25 void showHelp() const; 26 void libIdentify(); 27 28 int applyCommandLine( int argc, char const * const * argv ); 29 #if defined(CATCH_CONFIG_WCHAR) && defined(WIN32) && defined(UNICODE) 30 int applyCommandLine( int argc, wchar_t const * const * argv ); 31 #endif 32 33 void useConfigData( ConfigData const& configData ); 34 35 template<typename CharT> run(int argc,CharT const * const argv[])36 int run(int argc, CharT const * const argv[]) { 37 if (m_startupExceptions) 38 return 1; 39 int returnCode = applyCommandLine(argc, argv); 40 if (returnCode == 0) 41 returnCode = run(); 42 return returnCode; 43 } 44 45 int run(); 46 47 clara::Parser const& cli() const; 48 void cli( clara::Parser const& newParser ); 49 ConfigData& configData(); 50 Config& config(); 51 private: 52 int runInternal(); 53 54 clara::Parser m_cli; 55 ConfigData m_configData; 56 std::shared_ptr<Config> m_config; 57 bool m_startupExceptions = false; 58 }; 59 60 } // end namespace Catch 61 62 #endif // TWOBLUECUBES_CATCH_RUNNER_HPP_INCLUDED 63