]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/test/include/boost/test/unit_test_parameters.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / test / include / boost / test / unit_test_parameters.hpp
CommitLineData
7c673cae
FG
1// (C) Copyright Gennadiy Rozental 2001.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at
4// http://www.boost.org/LICENSE_1_0.txt)
5
6// See http://www.boost.org/libs/test for the library home page.
7//
8/// @file
9/// @brief Provides access to various Unit Test Framework runtime parameters
10///
11/// Primarily for use by the framework itself
12// ***************************************************************************
13
14#ifndef BOOST_TEST_UNIT_TEST_PARAMETERS_HPP_071894GER
15#define BOOST_TEST_UNIT_TEST_PARAMETERS_HPP_071894GER
16
17// Boost.Test
18#include <boost/test/detail/global_typedef.hpp>
19#include <boost/test/utils/runtime/argument.hpp>
20#include <boost/make_shared.hpp>
21
22// STL
23#include <iostream>
24#include <fstream>
25
26#include <boost/test/detail/suppress_warnings.hpp>
27
28//____________________________________________________________________________//
29
30namespace boost {
31namespace unit_test {
32namespace runtime_config {
33
34// ************************************************************************** //
35// ************** runtime_config ************** //
36// ************************************************************************** //
37
38// UTF parameters
39BOOST_TEST_DECL extern std::string AUTO_START_DBG;
40BOOST_TEST_DECL extern std::string BREAK_EXEC_PATH;
41BOOST_TEST_DECL extern std::string BUILD_INFO;
42BOOST_TEST_DECL extern std::string CATCH_SYS_ERRORS;
43BOOST_TEST_DECL extern std::string COLOR_OUTPUT;
44BOOST_TEST_DECL extern std::string DETECT_FP_EXCEPT;
45BOOST_TEST_DECL extern std::string DETECT_MEM_LEAKS;
46BOOST_TEST_DECL extern std::string LIST_CONTENT;
47BOOST_TEST_DECL extern std::string LIST_LABELS;
48BOOST_TEST_DECL extern std::string COMBINED_LOGGER;
49BOOST_TEST_DECL extern std::string LOG_FORMAT;
50BOOST_TEST_DECL extern std::string LOG_LEVEL;
51BOOST_TEST_DECL extern std::string LOG_SINK;
52BOOST_TEST_DECL extern std::string OUTPUT_FORMAT;
53BOOST_TEST_DECL extern std::string RANDOM_SEED;
54BOOST_TEST_DECL extern std::string REPORT_FORMAT;
55BOOST_TEST_DECL extern std::string REPORT_LEVEL;
56BOOST_TEST_DECL extern std::string REPORT_MEM_LEAKS;
57BOOST_TEST_DECL extern std::string REPORT_SINK;
58BOOST_TEST_DECL extern std::string RESULT_CODE;
59BOOST_TEST_DECL extern std::string RUN_FILTERS;
60BOOST_TEST_DECL extern std::string SAVE_TEST_PATTERN;
61BOOST_TEST_DECL extern std::string SHOW_PROGRESS;
62BOOST_TEST_DECL extern std::string USE_ALT_STACK;
63BOOST_TEST_DECL extern std::string WAIT_FOR_DEBUGGER;
64
65BOOST_TEST_DECL void init( int& argc, char** argv );
66
67// ************************************************************************** //
68// ************** runtime_param::get ************** //
69// ************************************************************************** //
70
71/// Access to arguments
72BOOST_TEST_DECL runtime::arguments_store const& argument_store();
73
74template<typename T>
75inline T const&
76get( runtime::cstring parameter_name )
77{
78 return argument_store().get<T>( parameter_name );
79}
80
81inline bool has( runtime::cstring parameter_name )
82{
83 return argument_store().has( parameter_name );
84}
85
86/// For public access
87BOOST_TEST_DECL bool save_pattern();
88
89// ************************************************************************** //
90// ************** stream_holder ************** //
91// ************************************************************************** //
92
93class stream_holder {
94public:
95 // Constructor
96 explicit stream_holder( std::ostream& default_stream = std::cout)
97 : m_stream( &default_stream )
98 {
99 }
100
101 void setup( const const_string& stream_name )
102 {
103 if(stream_name.empty())
104 return;
105
106 if( stream_name == "stderr" )
107 m_stream = &std::cerr;
108 else if( stream_name == "stdout" )
109 m_stream = &std::cout;
110 else {
111 m_file = boost::make_shared<std::ofstream>();
112 m_file->open( std::string(stream_name.begin(), stream_name.end()).c_str() );
113 m_stream = m_file.get();
114 }
115 }
116
117 // Access methods
118 std::ostream& ref() const { return *m_stream; }
119
120private:
121 // Data members
122 boost::shared_ptr<std::ofstream> m_file;
123 std::ostream* m_stream;
124};
125
126} // namespace runtime_config
127} // namespace unit_test
128} // namespace boost
129
130//____________________________________________________________________________//
131
132#include <boost/test/detail/enable_warnings.hpp>
133
134#endif // BOOST_TEST_UNIT_TEST_PARAMETERS_HPP_071894GER