File: fgCompilerOutputter.hxx

package info (click to toggle)
flightgear 1%3A2020.3.19%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 51,068 kB
  • sloc: cpp: 245,588; ansic: 181,318; sh: 13,686; perl: 4,475; python: 3,139; xml: 899; asm: 642; makefile: 347; java: 314
file content (89 lines) | stat: -rw-r--r-- 2,969 bytes parent folder | download | duplicates (4)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
 * Copyright (C) 2016 Edward d'Auvergne
 *
 * This file is part of the program FlightGear.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */


#ifndef _FG_COMPILER_OUTPUTTER_HXX
#define _FG_COMPILER_OUTPUTTER_HXX


#include <cppunit/CompilerOutputter.h>
#include <cppunit/TestFailure.h>

#include "fgTestListener.hxx"


// The custom outputter for the FlightGear test suite.
class fgCompilerOutputter : public CppUnit::CompilerOutputter
{
    public:
        // Constructor.
        fgCompilerOutputter(CppUnit::TestResultCollector *result,
            std::vector<TestIOCapt> *capt,
            const clock_t *clock,
            CppUnit::OStream &stream,
            bool ctest = false,
            bool debug = false,
            const std::string &locationFormat = CPPUNIT_COMPILER_LOCATION_FORMAT)
        : CppUnit::CompilerOutputter(result, stream, locationFormat)
        , io_capt(capt)
        , fg_result(result)
        , fg_stream(stream)
        , suite_timer(clock)
        , ctest_output(ctest)
        , debug(debug)
        {
        }

        // Create a new class instance.
        static fgCompilerOutputter *defaultOutputter(CppUnit::TestResultCollector *result, std::vector<TestIOCapt> *capt, const clock_t *clock, CppUnit::OStream &stream);

        // Print a summary after a successful run of the test suite.
        void printSuccess();

        // Detailed printout after a failed run of the test suite.
        void printFailureReport();

        // Printout for each failed test.
        void printFailureDetail(CppUnit::TestFailure *failure);

        // Printout of the test suite stats.
        void printSuiteStats();

        // The captured IO for each failed test.
        std::vector<TestIOCapt> *io_capt;

    private:
        // Store copies of the base class objects.
        CppUnit::TestResultCollector *fg_result;
        CppUnit::OStream &fg_stream;

        // The test suite time, in clock ticks.
        const clock_t *suite_timer;

        // Output control.
        bool ctest_output;
        bool debug;

        // Simgear logstream IO printout.
        void printIOStreamMessages(std::string heading, std::string messages, bool empty);
        void printIOStreamMessages(std::string heading, std::string messages) {printIOStreamMessages(heading, messages, false);}
};


#endif    // _FG_COMPILER_OUTPUTTER_HXX