1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
/******************************************************************************
* Copyright (c) 2000-2021 Ericsson Telecom AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* Balasko, Jeno
* Delic, Adam
* Raduly, Csaba
*
******************************************************************************/
#ifndef JUnitLogger_HH
#define JUnitLogger_HH
namespace TitanLoggerApi { class TitanLogEvent; }
#include "ILoggerPlugin.hh"
#include <stdio.h>
class JUnitLogger: public ILoggerPlugin
{
public:
JUnitLogger();
virtual ~JUnitLogger();
inline bool is_static() { return false; }
void init(const char *options = 0);
void fini();
void log(const TitanLoggerApi::TitanLogEvent& event, bool log_buffered,
bool separate_file, bool use_emergency_mask);
void set_parameter(const char *parameter_name, const char *parameter_value);
// do not implement ILoggerPlugin::set_file_name();
// it gets a filename skeleton and can't expand it.
virtual void open_file(bool /*is_first*/);
virtual void close_file();
enum xml_escape_char_t { LT=0x01, GT=0x02, QUOT=0x04, APOS=0x08, AMP=0x10 };
CHARSTRING escape_xml(const CHARSTRING& xml_str, int escape_chars);
CHARSTRING escape_xml_attribute(const CHARSTRING& attr_str) { return escape_xml(attr_str, QUOT|AMP); }
CHARSTRING escape_xml_element(const CHARSTRING& elem_str) { return escape_xml(elem_str, LT|AMP); }
CHARSTRING escape_xml_comment(const CHARSTRING& comm_str) { return escape_xml(comm_str, AMP); /* FIXME: --> should be escaped too */ }
private:
// parameters
char *filename_stem_;
char *testsuite_name_;
// working values
char *filename_;
FILE *file_stream_;
CHARSTRING error_message;
};
#endif // JUnitLogger_HH
|