Skip to content

Commit f916df0

Browse files
authored
testrunner: avoid some TestFixture::settingsBuilder() invocations (danmar#7845)
1 parent 9ac26af commit f916df0

10 files changed

+24
-30
lines changed

test/fixture.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ class TestFixture : public ErrorLogger {
162162

163163
SettingsBuilder& severity(Severity sev, bool b = true) {
164164
if (REDUNDANT_CHECK && settings.severity.isEnabled(sev) == b)
165-
throw std::runtime_error("redundant setting: severity");
165+
throw std::runtime_error("redundant setting: severity - " + severityToString(sev));
166166
settings.severity.setEnabled(sev, b);
167167
return *this;
168168
}
@@ -252,7 +252,7 @@ class TestFixture : public ErrorLogger {
252252
const TestFixture &fixture;
253253
Settings settings;
254254

255-
const bool REDUNDANT_CHECK = false;
255+
static constexpr bool REDUNDANT_CHECK = false;
256256
};
257257

258258
SettingsBuilder settingsBuilder() const {

test/testautovariables.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class TestAutoVariables : public TestFixture {
3030

3131
private:
3232
const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::style).library("std.cfg").library("qt.cfg").build();
33+
const Settings settings_i = settingsBuilder(settings).certainty(Certainty::inconclusive).build();
3334

3435
struct CheckOptions
3536
{
@@ -41,7 +42,7 @@ class TestAutoVariables : public TestFixture {
4142
#define check(...) check_(__FILE__, __LINE__, __VA_ARGS__)
4243
template<size_t size>
4344
void check_(const char* file, int line, const char (&code)[size], const CheckOptions& options = make_default_obj()) {
44-
const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, options.inconclusive).build();
45+
const Settings &settings1 = options.inconclusive ? settings_i : settings;
4546

4647
// Tokenize..
4748
SimpleTokenizer tokenizer(settings1, *this, options.cpp);

test/testclass.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class TestClass : public TestFixture {
3838
const Settings settings1 = settingsBuilder().severity(Severity::warning).library("std.cfg").build();
3939
const Settings settings2 = settingsBuilder().severity(Severity::style).library("std.cfg").certainty(Certainty::inconclusive).build();
4040
const Settings settings3 = settingsBuilder().severity(Severity::style).library("std.cfg").severity(Severity::warning).build();
41+
const Settings settings3_i = settingsBuilder(settings3).certainty(Certainty::inconclusive).build();
4142

4243
void run() override {
4344
mNewTemplate = true;
@@ -2640,7 +2641,7 @@ class TestClass : public TestFixture {
26402641
#define checkVirtualDestructor(...) checkVirtualDestructor_(__FILE__, __LINE__, __VA_ARGS__)
26412642
template<size_t size>
26422643
void checkVirtualDestructor_(const char* file, int line, const char (&code)[size], const CheckVirtualDestructorOptions& options = make_default_obj()) {
2643-
const Settings s = settingsBuilder(settings0).certainty(Certainty::inconclusive, options.inconclusive).severity(Severity::warning).build();
2644+
const Settings& s = options.inconclusive ? settings3_i : settings3;
26442645

26452646
// Tokenize..
26462647
SimpleTokenizer tokenizer(s, *this);

test/testcondition.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class TestCondition : public TestFixture {
3434
private:
3535
const Settings settings0 = settingsBuilder().library("qt.cfg").library("std.cfg").severity(Severity::style).severity(Severity::warning).build();
3636
/*const*/ Settings settings1 = settingsBuilder().severity(Severity::style).severity(Severity::warning).build();
37+
const Settings settings2 = settingsBuilder(settings0).severity(Severity::performance).certainty(Certainty::inconclusive).build();
3738

3839
void run() override {
3940
const char cfg[] = "<?xml version=\"1.0\"?>\n"
@@ -153,9 +154,7 @@ class TestCondition : public TestFixture {
153154
template<size_t size>
154155
void checkP_(const char* file, int line, const char (&code)[size])
155156
{
156-
const Settings settings = settingsBuilder(settings0).severity(Severity::performance).certainty(Certainty::inconclusive).build();
157-
158-
SimpleTokenizer2 tokenizer(settings, *this, code, "test.cpp");
157+
SimpleTokenizer2 tokenizer(settings2, *this, code, "test.cpp");
159158

160159
// Tokenizer..
161160
ASSERT_LOC(tokenizer.simplifyTokens1(""), file, line);

test/testincompletestatement.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class TestIncompleteStatement : public TestFixture {
3030

3131
private:
3232
const Settings settings = settingsBuilder().severity(Severity::warning).library("std.cfg").build();
33+
const Settings settings_i = settingsBuilder(settings).certainty(Certainty::inconclusive).build();
3334

3435
struct CheckOptions
3536
{
@@ -41,7 +42,7 @@ class TestIncompleteStatement : public TestFixture {
4142
#define check(...) check_(__FILE__, __LINE__, __VA_ARGS__)
4243
template<size_t size>
4344
void check_(const char* file, int line, const char (&code)[size], const CheckOptions& options = make_default_obj()) {
44-
const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, options.inconclusive).build();
45+
const Settings &settings1 = options.inconclusive ? settings_i : settings;
4546

4647
SimpleTokenizer2 tokenizer(settings1, *this, code, options.cpp ? "test.cpp" : "test.c");
4748

test/testleakautovar.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -646,20 +646,18 @@ class TestLeakAutoVar : public TestFixture {
646646
}
647647

648648
void memcpy1() { // #11542
649-
const Settings s = settingsBuilder().library("std.cfg").build();
650649
check("void f(char** old, char* value) {\n"
651650
" char *str = strdup(value);\n"
652651
" memcpy(old, &str, sizeof(char*));\n"
653-
"}\n", dinit(CheckOptions, $.s = &s));
652+
"}\n");
654653
ASSERT_EQUALS("", errout_str());
655654
}
656655

657656
void memcpy2() {
658-
const Settings s = settingsBuilder().library("std.cfg").build();
659657
check("void f(char* old, char* value, size_t len) {\n"
660658
" char *str = strdup(value);\n"
661659
" memcpy(old, str, len);\n"
662-
"}\n", dinit(CheckOptions, $.cpp = true, $.s = &s));
660+
"}\n", dinit(CheckOptions, $.cpp = true));
663661
ASSERT_EQUALS("[test.cpp:4:1]: (error) Memory leak: str [memleak]\n", errout_str());
664662
}
665663

@@ -1894,20 +1892,19 @@ class TestLeakAutoVar : public TestFixture {
18941892
"}\n");
18951893
ASSERT_EQUALS("", errout_str());
18961894

1897-
const Settings s = settingsBuilder().library("std.cfg").build();
18981895
check("struct S {};\n"
18991896
"void f(int i, std::vector<std::unique_ptr<S>> &v) {\n"
19001897
" if (i < 1) {\n"
19011898
" auto s = new S;\n"
19021899
" v.push_back(std::unique_ptr<S>(s));\n"
19031900
" }\n"
1904-
"}\n", dinit(CheckOptions, $.cpp = true, $.s = &s));
1901+
"}\n", dinit(CheckOptions, $.cpp = true));
19051902
ASSERT_EQUALS("", errout_str()); // don't crash
19061903

19071904
check("void g(size_t len) {\n" // #12365
19081905
" char* b = new char[len + 1]{};\n"
19091906
" std::string str = std::string(b);\n"
1910-
"}", dinit(CheckOptions, $.cpp = true, $.s = &s));
1907+
"}", dinit(CheckOptions, $.cpp = true));
19111908
ASSERT_EQUALS("[test.cpp:4:1]: (error) Memory leak: b [memleak]\n", errout_str());
19121909
}
19131910

test/testnullpointer.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,7 @@ class TestNullPointer : public TestFixture {
202202
#define checkP(...) checkP_(__FILE__, __LINE__, __VA_ARGS__)
203203
template<size_t size>
204204
void checkP_(const char* file, int line, const char (&code)[size]) {
205-
const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, false).build();
206-
207-
SimpleTokenizer2 tokenizer(settings1, *this, code, "test.cpp");
205+
SimpleTokenizer2 tokenizer(settings, *this, code, "test.cpp");
208206

209207
// Tokenizer..
210208
ASSERT_LOC(tokenizer.simplifyTokens1(""), file, line);

test/testsimplifytemplate.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ class TestSimplifyTemplate : public TestFixture {
3737
TestSimplifyTemplate() : TestFixture("TestSimplifyTemplate") {}
3838

3939
private:
40-
// If there are unused templates, keep those
4140
const Settings settings = settingsBuilder().severity(Severity::portability).build();
41+
const Settings settings1 = settingsBuilder(settings).library("std.cfg").build();
42+
const Settings settings1_d = settingsBuilder(settings1).debugwarnings().build();
4243

4344
void run() override {
4445
TEST_CASE(template1);
@@ -327,8 +328,8 @@ class TestSimplifyTemplate : public TestFixture {
327328
#define tok(...) tok_(__FILE__, __LINE__, __VA_ARGS__)
328329
template<size_t size>
329330
std::string tok_(const char* file, int line, const char (&code)[size], const CheckOptions& options = make_default_obj()) {
330-
const Settings settings1 = settingsBuilder(settings).library("std.cfg").debugwarnings(options.debugwarnings).build();
331-
SimpleTokenizer tokenizer(settings1, *this);
331+
const Settings& s = options.debugwarnings ? settings1_d : settings1;
332+
SimpleTokenizer tokenizer(s, *this);
332333

333334
ASSERT_LOC(tokenizer.tokenize(code), file, line);
334335

@@ -338,8 +339,8 @@ class TestSimplifyTemplate : public TestFixture {
338339
#define dump(...) dump_(__FILE__, __LINE__, __VA_ARGS__)
339340
template<size_t size>
340341
std::string dump_(const char* file, int line, const char (&code)[size], const CheckOptions& options = make_default_obj()) {
341-
const Settings settings1 = settingsBuilder(settings).library("std.cfg").debugwarnings(options.debugwarnings).build();
342-
SimpleTokenizer tokenizer(settings1, *this);
342+
const Settings& s = options.debugwarnings ? settings1_d : settings1;
343+
SimpleTokenizer tokenizer(s, *this);
343344

344345
ASSERT_LOC(tokenizer.tokenize(code), file, line);
345346

test/testuninitvar.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5471,14 +5471,11 @@ class TestUninitVar : public TestFixture {
54715471
template<size_t size>
54725472
void valueFlowUninit_(const char* file, int line, const char (&code)[size], bool cpp = true)
54735473
{
5474-
// Tokenize..
5475-
const Settings s = settingsBuilder(settings).debugwarnings(false).build();
5476-
5477-
SimpleTokenizer tokenizer(s, *this, cpp);
5474+
SimpleTokenizer tokenizer(settings, *this, cpp);
54785475
ASSERT_LOC(tokenizer.tokenize(code), file, line);
54795476

54805477
// Check for redundant code..
5481-
CheckUninitVar checkuninitvar(&tokenizer, &s, this);
5478+
CheckUninitVar checkuninitvar(&tokenizer, &settings, this);
54825479
(checkuninitvar.valueFlowUninit)();
54835480
}
54845481

test/testvalueflow.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7535,10 +7535,9 @@ class TestValueFlow : public TestFixture {
75357535

75367536
void valueFlowUnknownFunctionReturnMalloc() { // #4626
75377537
const char *code;
7538-
const Settings s = settingsBuilder().library("std.cfg").build();
75397538

75407539
code = "ptr = malloc(10);";
7541-
const auto& values = tokenValues(code, "(", &s);
7540+
const auto& values = tokenValues(code, "(");
75427541
ASSERT_EQUALS(1, values.size());
75437542
ASSERT_EQUALS(true, values.front().isIntValue());
75447543
ASSERT_EQUALS(true, values.front().isPossible());

0 commit comments

Comments
 (0)