iutest  1.17.99.14
iutest_stderr_xml_generator.hpp
[詳解]
1 //======================================================================
2 //-----------------------------------------------------------------------
13 //-----------------------------------------------------------------------
14 //======================================================================
15 #ifndef INCG_IRIS_IUTEST_STDERR_XML_GENERATOR_HPP_44748A14_3446_49D5_8ECE_05ABED0FFF33_
16 #define INCG_IRIS_IUTEST_STDERR_XML_GENERATOR_HPP_44748A14_3446_49D5_8ECE_05ABED0FFF33_
17 
18 //======================================================================
19 // include
20 // IWYU pragma: begin_exports
22 // IWYU pragma: end_exports
23 
24 namespace iutest
25 {
26 
27 //======================================================================
28 // class
29 
30 namespace detail
31 {
32 
36 template<typename T, typename ::std::string (*GetXmlPath)()>
37 class StderrXmlGeneratorListenerBase : public T
38 {
39 public:
44  explicit StderrXmlGeneratorListenerBase(const ::std::string& path) : T(path) {}
45 
46  ~StderrXmlGeneratorListenerBase() {}
47 
48 #if IUTEST_HAS_FOPEN
49 private:
50  StdErrorFile m_stderr;
51 
52  virtual bool FileOpen(const char* path)
53  {
54  if( m_stderr.Open(path, IFile::OpenAppend) )
55  {
56  this->m_fp = &m_stderr;
57  return true;
58  }
59  return false;
60  }
61  virtual void FileClose()
62  {
63  this->m_fp = NULL;
64  }
65 #endif
66 
67 public:
69  static bool SetUp()
70  {
71  ::std::string xmlpath = GetXmlPath();
72  if( !xmlpath.empty() )
73  {
74  TestEnv::event_listeners().set_default_xml_generator(new StderrXmlGeneratorListenerBase(xmlpath));
75  return true;
76  }
77  return false;
78  }
79 };
80 
81 } // end of namespace detail
82 
83 typedef detail::StderrXmlGeneratorListenerBase<
84  DefaultXmlGeneratorListener, TestEnv::get_report_xml_filepath> StderrXmlGeneratorListener;
85 typedef detail::StderrXmlGeneratorListenerBase<
86  JunitXmlGeneratorListener, TestEnv::get_report_junit_xml_filepath> StderrJunitXmlGeneratorListener;
87 
88 } // end of namespace iutest
89 
90 #endif // INCG_IRIS_IUTEST_STDERR_XML_GENERATOR_HPP_44748A14_3446_49D5_8ECE_05ABED0FFF33_
@ OpenAppend
追記
Definition: iutest_file.hpp:48
::std::string get_report_junit_xml_filepath()
junit xml 出力パスを取得
::std::string get_report_xml_filepath()
xml 出力パスを取得
output junit xml event listener
iutest root namespace
Definition: iutest_charcode.hpp:33