Home | History | Annotate | Download | only in internal
      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>
     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