micro-test-plus 5.0.1
µTest++ Testing Framework
Loading...
Searching...
No Matches
reporter-tap.h
Go to the documentation of this file.
1/*
2 * This file is part of the µOS++ project (https://micro-os-plus.github.io/).
3 * Copyright (c) 2021-2026 Liviu Ionescu. All rights reserved.
4 *
5 * Permission to use, copy, modify, and/or distribute this software for any
6 * purpose is hereby granted, under the terms of the MIT license.
7 *
8 * If a copy of the license was not distributed with this file, it can be
9 * obtained from https://opensource.org/licenses/mit.
10 *
11 * Major parts of the code are inspired from v1.1.8 of the Boost UT project,
12 * released under the terms of the Boost Version 1.0 Software License,
13 * which can be obtained from https://www.boost.org/LICENSE_1_0.txt.
14 */
15
16// ----------------------------------------------------------------------------
17
38
39#ifndef MICRO_OS_PLUS_MICRO_TEST_PLUS_TEST_REPORTER_TAP_H_
40#define MICRO_OS_PLUS_MICRO_TEST_PLUS_TEST_REPORTER_TAP_H_
41
42// ----------------------------------------------------------------------------
43
44#if defined(__cplusplus)
45
46// ----------------------------------------------------------------------------
47
48#if __has_include("micro-os-plus/project-config.h")
49#include "micro-os-plus/project-config.h"
50#endif // __has_include("micro-os-plus/project-config.h")
51
52#if __has_include("micro-os-plus/micro-test-plus-defines.h")
53#include "micro-os-plus/micro-test-plus-defines.h"
54#endif // __has_include("micro-os-plus/micro-test-plus-defines.h")
55
56#include "reporter.h"
57#include "reflection.h"
58
59// ----------------------------------------------------------------------------
60
61#if defined(__GNUC__)
62#pragma GCC diagnostic push
63
64#pragma GCC diagnostic ignored "-Wpadded"
65#if defined(__clang__)
66#pragma clang diagnostic ignored "-Wc++98-compat"
67#endif // defined(__clang__)
68#endif // defined(__GNUC__)
69
70// ============================================================================
71
73{
74 // --------------------------------------------------------------------------
75
76 class runner;
77 class suite;
78 class subtest;
79
80 // ==========================================================================
81
102 class reporter_tap final : public reporter
103 {
104 public:
111 reporter_tap (std::unique_ptr<std::vector<std::string_view>> argvs);
112
116 reporter_tap (const reporter_tap&) = delete;
117
122
128 = delete;
129
135 = delete;
136
140 ~reporter_tap () override;
141
142 // ------------------------------------------------------------------------
143
152
153 // Bring base class operator<< overloads into scope to prevent name hiding.
154 using reporter::operator<<;
155
156 // ------------------------------------------------------------------------
157
165 void
166 begin_session (runner& runner) override;
167
175 void
176 end_session (runner& runner) override;
177
185 virtual void
186 begin_suite (suite& suite) override;
187
195 virtual void
196 end_suite (suite& suite) override;
197
205 virtual void
206 begin_subtest (subtest& subtest) override;
207
215 virtual void
216 end_subtest (subtest& subtest) override;
217
226 virtual const char*
227 get_comment_prefix (void) override;
228
229 protected:
238 void
239 output_pass_prefix_ (std::string& message, subtest& subtest) override;
240
248 void
250
262 void
263 output_fail_prefix_ (std::string& message, const bool has_expression,
264 const reflection::source_location& location,
265 subtest& subtest) override;
266
276 void
278 bool abort, subtest& subtest) override;
279 };
280
281 // --------------------------------------------------------------------------
282} // namespace micro_os_plus::micro_test_plus
283
284#if defined(__GNUC__)
285#pragma GCC diagnostic pop
286#endif // defined(__GNUC__)
287
288// ----------------------------------------------------------------------------
289
290#endif // defined(__cplusplus)
291
292// ----------------------------------------------------------------------------
293
294#endif // MICRO_OS_PLUS_MICRO_TEST_PLUS_TEST_REPORTER_TAP_H_
295
296// ----------------------------------------------------------------------------
Local implementation of source location information for diagnostics.
Definition reflection.h:150
void begin_session(runner &runner) override
Mark the beginning of a test session.
reporter_tap(const reporter_tap &)=delete
Deleted copy constructor to prevent copying.
virtual void begin_subtest(subtest &subtest) override
Mark the beginning of a subtest.
reporter_tap & operator<<(detail::indent_t m)
Output operator for the indent_t manipulator.
void output_fail_prefix_(std::string &message, const bool has_expression, const reflection::source_location &location, subtest &subtest) override
Outputs the prefix for a failing condition.
reporter_tap & operator=(const reporter_tap &)=delete
Deleted copy assignment operator to prevent copying.
reporter_tap(reporter_tap &&)=delete
Deleted move constructor to prevent moving.
virtual void end_subtest(subtest &subtest) override
Mark the end of a subtest.
virtual void end_suite(suite &suite) override
Mark the end of a test suite.
void output_fail_suffix_(const reflection::source_location &location, bool abort, subtest &subtest) override
Outputs the suffix for a failing condition.
void end_session(runner &runner) override
Mark the end of a test session.
reporter_tap(std::unique_ptr< std::vector< std::string_view > > argvs)
Constructor for the reporter_tap class.
virtual const char * get_comment_prefix(void) override
Returns the TAP comment prefix string "# ".
void output_pass_prefix_(std::string &message, subtest &subtest) override
Outputs the prefix for a passing condition.
void output_pass_suffix_(subtest &subtest) override
Outputs the suffix for a passing condition.
virtual void begin_suite(suite &suite) override
Mark the beginning of a test suite.
~reporter_tap() override
Destructor for the reporter_tap class.
reporter(std::unique_ptr< std::vector< std::string_view > > argvs)
Constructor for the reporter class.
Definition reporter.cpp:80
The test runner for the µTest++ framework.
Definition runner.h:144
A named, runnable test case that lives inside a suite.
Definition test.h:551
A named, runnable test suite registered with the test runner.
Definition test.h:723
Primary namespace for the µTest++ testing framework.
C++ header file with declarations for the µTest++ reflection utilities.
C++ header file with declarations for the µTest++ test reporter.
Parameterised stream manipulator for outputting indentation.
Definition reporter.h:147