File: catch_reporter_automake.hpp

package info (click to toggle)
log4cplus 2.0.8-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 11,592 kB
  • sloc: cpp: 53,091; sh: 10,537; ansic: 1,845; python: 1,226; perl: 263; makefile: 209; xml: 85; objc: 59
file content (62 lines) | stat: -rw-r--r-- 2,206 bytes parent folder | download | duplicates (23)
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
57
58
59
60
61
62
/*
 *  Created by Justin R. Wilson on 2/19/2017.
 *  Copyright 2017 Justin R. Wilson. All rights reserved.
 *
 *  Distributed under the Boost Software License, Version 1.0. (See accompanying
 *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 */
#ifndef TWOBLUECUBES_CATCH_REPORTER_AUTOMAKE_HPP_INCLUDED
#define TWOBLUECUBES_CATCH_REPORTER_AUTOMAKE_HPP_INCLUDED

// Don't #include any Catch headers here - we can assume they are already
// included before this header.
// This is not good practice in general but is necessary in this case so this
// file can be distributed as a single header that works with the main
// Catch single header.

namespace Catch {

    struct AutomakeReporter : StreamingReporterBase<AutomakeReporter> {
        AutomakeReporter( ReporterConfig const& _config )
          :   StreamingReporterBase( _config )
        {}

        ~AutomakeReporter() override;

        static std::string getDescription() {
            return "Reports test results in the format of Automake .trs files";
        }

        void assertionStarting( AssertionInfo const& ) override {}

        bool assertionEnded( AssertionStats const& /*_assertionStats*/ ) override { return true; }

        void testCaseEnded( TestCaseStats const& _testCaseStats ) override {
            // Possible values to emit are PASS, XFAIL, SKIP, FAIL, XPASS and ERROR.
            stream << ":test-result: ";
            if (_testCaseStats.totals.assertions.allPassed()) {
                stream << "PASS";
            } else if (_testCaseStats.totals.assertions.allOk()) {
                stream << "XFAIL";
            } else {
                stream << "FAIL";
            }
            stream << ' ' << _testCaseStats.testInfo.name << '\n';
            StreamingReporterBase::testCaseEnded( _testCaseStats );
        }

        void skipTest( TestCaseInfo const& testInfo ) override {
            stream << ":test-result: SKIP " << testInfo.name << '\n';
        }

    };

#ifdef CATCH_IMPL
    AutomakeReporter::~AutomakeReporter() {}
#endif

    CATCH_REGISTER_REPORTER( "automake", AutomakeReporter)

} // end namespace Catch

#endif // TWOBLUECUBES_CATCH_REPORTER_AUTOMAKE_HPP_INCLUDED