forked from approvals/ApprovalTests.cpp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHelpMessages.cpp
More file actions
157 lines (146 loc) · 5.25 KB
/
HelpMessages.cpp
File metadata and controls
157 lines (146 loc) · 5.25 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include "ApprovalTests/namers/HelpMessages.h"
#include "ApprovalTests/utilities/StringUtils.h"
#include <sstream>
namespace ApprovalTests
{
std::string HelpMessages::getMisconfiguredBuildHelp(const std::string& fileName)
{
std::string helpMessage = R"(* Welcome to Approval Tests.
*
* There seems to be a problem with your build configuration.
* We cannot find the test source file at:
* [fileName]
*
* For details on how to fix this, please visit:
* https://github.com/approvals/ApprovalTests.cpp/blob/master/doc/TroubleshootingMisconfiguredBuild.md
*
* For advanced users only:
* If you believe you have reached this message in error, you can bypass
* the check by calling ApprovalTestNamer::setCheckBuildConfig(false);
)";
return StringUtils::replaceAll(
topAndTailHelpMessage(helpMessage), "[fileName]", fileName);
}
std::string HelpMessages::getMisconfiguredMainHelp()
{
std::string helpMessage = R"(* Welcome to Approval Tests.
*
* You have forgotten to configure your test framework for Approval Tests.
*
* To do this in Catch, add the following to your main.cpp:
*
* #define APPROVALS_CATCH
* #include "ApprovalTests.hpp"
*
* To do this in Google Test, add the following to your main.cpp:
*
* #define APPROVALS_GOOGLETEST
* #include "ApprovalTests.hpp"
*
* To do this in doctest, add the following to your main.cpp:
*
* #define APPROVALS_DOCTEST
* #include "ApprovalTests.hpp"
*
* To do this in Boost.Test, add the following to your main.cpp:
*
* #define APPROVALS_BOOSTTEST
* #include "ApprovalTests.hpp"
*
* To do this in CppUTest, add the following to your main.cpp:
*
* #define APPROVALS_CPPUTEST
* #include "ApprovalTests.hpp"
*
* To do this in [Boost].UT, add the following to your main.cpp:
*
* #define APPROVALS_UT
* #include "ApprovalTests.hpp"
*
* For more information, please visit:
* https://github.com/approvals/ApprovalTests.cpp/blob/master/doc/TroubleshootingMisconfiguredMain.md
)";
return topAndTailHelpMessage(helpMessage);
}
std::string HelpMessages::getUnconfiguredRootDirectory()
{
std::string helpMessage = R"(* Hello from Approval Tests.
*
* It looks like your program is calling some code that requires knowledge of
* the location of the main() in your source tree.
*
* To do this, add the following to your main.cpp file:
*
* APPROVAL_TESTS_REGISTER_MAIN_DIRECTORY
*
* Currently, this is only required if you are using TemplatedCustomNamer's
* {RelativeTestSourceDirectory}.
)";
return topAndTailHelpMessage(helpMessage);
}
std::string
HelpMessages::getUnknownEnvVarReporterHelp(const std::string& envVarName,
const std::string& selected,
const std::vector<std::string>& knowns)
{
std::string helpMessage =
R"(* The environment variable [envVarName] contains the value
* [selected]
*
* This reporter is not recognised.
*
* Please unset the environment value, or change it to refer to one of the
* known reporters:
*
[known]*
* For more information, see:
* https://github.com/approvals/ApprovalTests.cpp/blob/master/doc/how_tos/SelectReporterWithEnvironmentVariable.md
)";
return envVarErrorMessage(envVarName, selected, knowns, helpMessage);
}
std::string
HelpMessages::getInvalidEnvVarReporterHelp(const std::string& envVarName,
const std::string& selected,
const std::vector<std::string>& knowns)
{
std::string helpMessage =
R"(* The environment variable [envVarName] contains the value
* [selected]
*
* This reporter is recognised, but cannot be found on this machine.
*
* Please unset the environment value, or change it to refer to a working
* reporter:
*
[known]*
* For more information, see:
* https://github.com/approvals/ApprovalTests.cpp/blob/master/doc/how_tos/SelectReporterWithEnvironmentVariable.md
)";
return envVarErrorMessage(envVarName, selected, knowns, helpMessage);
}
std::string HelpMessages::envVarErrorMessage(const std::string& envVarName,
const std::string& selected,
const std::vector<std::string>& knowns,
std::string& helpMessage)
{
std::stringstream ss;
for (auto& known : knowns)
{
ss << "* " << known << '\n';
}
helpMessage = StringUtils::replaceAll(helpMessage, "[selected]", selected);
helpMessage = StringUtils::replaceAll(helpMessage, "[envVarName]", envVarName);
return topAndTailHelpMessage(
StringUtils::replaceAll(helpMessage, "[known]", ss.str()));
}
std::string HelpMessages::topAndTailHelpMessage(const std::string& message)
{
const std::string lineBreak =
"**************************************************************"
"***************";
const std::string lineBuffer =
"* "
" *\n";
return lineBreak + '\n' + lineBuffer + message + lineBuffer + lineBreak;
}
}