Skip to content

Commit 5745194

Browse files
committed
Revert testrunner: more SettingsBuilder usage and const cleanups (danmar#5026)
1 parent 4372cfb commit 5745194

30 files changed

+326
-285
lines changed

test/fixture.cpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -411,13 +411,3 @@ TestFixture::SettingsBuilder& TestFixture::SettingsBuilder::library(const char l
411411
settings.libraries.emplace_back(lib_s);
412412
return *this;
413413
}
414-
415-
TestFixture::SettingsBuilder& TestFixture::SettingsBuilder::platform(cppcheck::Platform::Type type)
416-
{
417-
const std::string platformStr = cppcheck::Platform::toString(type);
418-
std::string errstr;
419-
// TODO: exename is not yet set
420-
if (!settings.platform.set(platformStr, errstr, {fixture.exename}))
421-
throw std::runtime_error("platform '" + platformStr + "' not found");
422-
return *this;
423-
}

test/fixture.h

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ class TestFixture : public ErrorLogger {
134134
explicit SettingsBuilder(const TestFixture &fixture) : fixture(fixture) {}
135135
SettingsBuilder(const TestFixture &fixture, Settings settings) : fixture(fixture), settings(std::move(settings)) {}
136136

137-
SettingsBuilder& severity(Severity::SeverityType sev, bool b = true) {
138-
settings.severity.setEnabled(sev, b);
137+
SettingsBuilder& severity(Severity::SeverityType sev) {
138+
settings.severity.enable(sev);
139139
return *this;
140140
}
141141

@@ -154,8 +154,8 @@ class TestFixture : public ErrorLogger {
154154
return *this;
155155
}
156156

157-
SettingsBuilder& checkUnusedTemplates(bool b = true) {
158-
settings.checkUnusedTemplates = b;
157+
SettingsBuilder& checkUnusedTemplates() {
158+
settings.checkUnusedTemplates = true;
159159
return *this;
160160
}
161161

@@ -176,18 +176,6 @@ class TestFixture : public ErrorLogger {
176176

177177
SettingsBuilder& library(const char lib[]);
178178

179-
SettingsBuilder& platform(cppcheck::Platform::Type type);
180-
181-
SettingsBuilder& checkConfiguration() {
182-
settings.checkConfiguration = true;
183-
return *this;
184-
}
185-
186-
SettingsBuilder& checkHeaders(bool b = true) {
187-
settings.checkHeaders = b;
188-
return *this;
189-
}
190-
191179
Settings build() {
192180
return std::move(settings);
193181
}

test/testastutils.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,8 @@ class TestAstUtils : public TestFixture {
383383
const char* file,
384384
int line)
385385
{
386-
const Settings settings = settingsBuilder().library("std.cfg").build();
386+
Settings settings;
387+
LOAD_LIB_2(settings.library, "std.cfg");
387388
Tokenizer tokenizer(&settings, this);
388389
std::istringstream istr(code);
389390
ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line);

test/testbufferoverrun.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,14 @@ class TestBufferOverrun : public TestFixture {
7777
// Clear the error buffer..
7878
errout.str("");
7979

80-
const Settings settings = settingsBuilder(settings0).severity(Severity::style).severity(Severity::warning).severity(Severity::portability).severity(Severity::performance)
81-
.c(Standards::CLatest).cpp(Standards::CPPLatest).certainty(Certainty::inconclusive).build();
80+
Settings settings = settings0;
81+
settings.severity.enable(Severity::style);
82+
settings.severity.enable(Severity::warning);
83+
settings.severity.enable(Severity::portability);
84+
settings.severity.enable(Severity::performance);
85+
settings.standards.c = Standards::CLatest;
86+
settings.standards.cpp = Standards::CPPLatest;
87+
settings.certainty.enable(Certainty::inconclusive);
8288

8389
// Raw tokens..
8490
std::vector<std::string> files(1, filename);

test/testcharvar.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,11 @@ class TestCharVar : public TestFixture {
3131
TestCharVar() : TestFixture("TestCharVar") {}
3232

3333
private:
34-
const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::portability).platform(cppcheck::Platform::Type::Unspecified).build();
34+
Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::portability).build();
3535

3636
void run() override {
37+
PLATFORM(settings.platform, cppcheck::Platform::Type::Unspecified);
38+
3739
TEST_CASE(array_index_1);
3840
TEST_CASE(array_index_2);
3941
TEST_CASE(bitop);

test/testclangimport.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1048,7 +1048,11 @@ class TestClangImport : public TestFixture {
10481048

10491049

10501050
#define GET_SYMBOL_DB(AST) \
1051-
const Settings settings = settingsBuilder().clang().platform(cppcheck::Platform::Type::Unix64).build(); \
1051+
Settings settings = settingsBuilder().clang().build(); \
1052+
{ \
1053+
std::string errstr; \
1054+
ASSERT_EQUALS_MSG(true, settings.platform.set("unix64", errstr, {exename.c_str()}), errstr); \
1055+
} \
10521056
Tokenizer tokenizer(&settings, this); \
10531057
{ \
10541058
std::istringstream istr(AST); \

test/testclass.cpp

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ class TestClass : public TestFixture {
259259
void checkCopyCtorAndEqOperator_(const char code[], const char* file, int line) {
260260
// Clear the error log
261261
errout.str("");
262-
const Settings settings = settingsBuilder().severity(Severity::warning).build();
262+
Settings settings = settingsBuilder().severity(Severity::warning).build();
263263

264264
Preprocessor preprocessor(settings);
265265

@@ -2570,7 +2570,6 @@ class TestClass : public TestFixture {
25702570
// Clear the error log
25712571
errout.str("");
25722572

2573-
// TODO: subsequent tests depend on these changes - should use SettingsBuilder
25742573
settings0.certainty.setEnabled(Certainty::inconclusive, inconclusive);
25752574
settings0.severity.enable(Severity::warning);
25762575

@@ -2887,7 +2886,7 @@ class TestClass : public TestFixture {
28872886

28882887
#define checkNoMemset(...) checkNoMemset_(__FILE__, __LINE__, __VA_ARGS__)
28892888
void checkNoMemset_(const char* file, int line, const char code[]) {
2890-
const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::portability).build();
2889+
Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::portability).build();
28912890
checkNoMemset_(file, line, code, settings);
28922891
}
28932892

@@ -3151,7 +3150,7 @@ class TestClass : public TestFixture {
31513150
errout.str());
31523151

31533152
// #1655
3154-
const Settings s = settingsBuilder().library("std.cfg").build();
3153+
Settings s = settingsBuilder().library("std.cfg").build();
31553154
checkNoMemset("void f() {\n"
31563155
" char c[] = \"abc\";\n"
31573156
" std::string s;\n"
@@ -3558,20 +3557,23 @@ class TestClass : public TestFixture {
35583557
}
35593558

35603559
#define checkConst(...) checkConst_(__FILE__, __LINE__, __VA_ARGS__)
3561-
void checkConst_(const char* file, int line, const char code[], const Settings *s = nullptr, bool inconclusive = true) {
3560+
void checkConst_(const char* file, int line, const char code[], Settings *s = nullptr, bool inconclusive = true) {
35623561
// Clear the error log
35633562
errout.str("");
35643563

3565-
const Settings settings = settingsBuilder(s ? *s : settings0).certainty(Certainty::inconclusive, inconclusive).build();
3564+
// Check..
3565+
if (!s)
3566+
s = &settings0;
3567+
s->certainty.setEnabled(Certainty::inconclusive, inconclusive);
35663568

3567-
Preprocessor preprocessor(settings);
3569+
Preprocessor preprocessor(*s);
35683570

35693571
// Tokenize..
3570-
Tokenizer tokenizer(&settings, this, &preprocessor);
3572+
Tokenizer tokenizer(s, this, &preprocessor);
35713573
std::istringstream istr(code);
35723574
ASSERT_LOC(tokenizer.tokenize(istr, "test.cpp"), file, line);
35733575

3574-
CheckClass checkClass(&tokenizer, &settings, this);
3576+
CheckClass checkClass(&tokenizer, s, this);
35753577
(checkClass.checkConst)();
35763578
}
35773579

@@ -7222,7 +7224,7 @@ class TestClass : public TestFixture {
72227224
}
72237225

72247226
void qualifiedNameMember() { // #10872
7225-
const Settings s = settingsBuilder().severity(Severity::style).debugwarnings().library("std.cfg").build();
7227+
Settings s = settingsBuilder().severity(Severity::style).debugwarnings().library("std.cfg").build();
72267228
checkConst("struct data {};\n"
72277229
" struct S {\n"
72287230
" std::vector<data> std;\n"
@@ -7277,7 +7279,7 @@ class TestClass : public TestFixture {
72777279
errout.str("");
72787280

72797281
// Check..
7280-
const Settings settings = settingsBuilder().severity(Severity::performance).build();
7282+
Settings settings = settingsBuilder().severity(Severity::performance).build();
72817283

72827284
Preprocessor preprocessor(settings);
72837285

@@ -7607,7 +7609,9 @@ class TestClass : public TestFixture {
76077609
errout.str("");
76087610

76097611
// Check..
7610-
const Settings settings = settingsBuilder().severity(Severity::warning).certainty(Certainty::inconclusive, inconclusive).build();
7612+
Settings settings;
7613+
settings.severity.enable(Severity::warning);
7614+
settings.certainty.setEnabled(Certainty::inconclusive, inconclusive);
76117615

76127616
Preprocessor preprocessor(settings);
76137617

@@ -7956,7 +7960,7 @@ class TestClass : public TestFixture {
79567960
// Clear the error log
79577961
errout.str("");
79587962

7959-
const Settings settings = settingsBuilder().severity(Severity::style).build();
7963+
Settings settings = settingsBuilder().severity(Severity::style).build();
79607964

79617965
Preprocessor preprocessor(settings);
79627966

test/testcondition.cpp

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,14 @@ class TestCondition : public TestFixture {
3939
TestCondition() : TestFixture("TestCondition") {}
4040

4141
private:
42-
const Settings settings0 = settingsBuilder().library("qt.cfg").library("std.cfg").severity(Severity::style).severity(Severity::warning).platform(cppcheck::Platform::Type::Native).build();
43-
Settings settings1 = settingsBuilder().severity(Severity::style).severity(Severity::warning).platform(cppcheck::Platform::Type::Native).build();
42+
Settings settings0 = settingsBuilder().library("qt.cfg").library("std.cfg").severity(Severity::style).severity(Severity::warning).build();
43+
Settings settings1 = settingsBuilder().severity(Severity::style).severity(Severity::warning).build();
4444

4545
void run() override {
46+
// known platform..
47+
PLATFORM(settings0.platform, cppcheck::Platform::Type::Native);
48+
PLATFORM(settings1.platform, cppcheck::Platform::Type::Native);
49+
4650
const char cfg[] = "<?xml version=\"1.0\"?>\n"
4751
"<def>\n"
4852
" <function name=\"bar\"> <pure/> </function>\n"
@@ -128,7 +132,7 @@ class TestCondition : public TestFixture {
128132
TEST_CASE(knownConditionIncrementLoop); // #9808
129133
}
130134

131-
void check(const char code[], Settings &settings, const char* filename = "test.cpp") {
135+
void check(const char code[], Settings *settings, const char* filename = "test.cpp") {
132136
// Clear the error buffer..
133137
errout.str("");
134138

@@ -142,21 +146,21 @@ class TestCondition : public TestFixture {
142146
std::map<std::string, simplecpp::TokenList*> filedata;
143147
simplecpp::preprocess(tokens2, tokens1, files, filedata, simplecpp::DUI());
144148

145-
Preprocessor preprocessor(settings);
149+
Preprocessor preprocessor(*settings);
146150
preprocessor.setDirectives(tokens1);
147151

148152
// Tokenizer..
149-
Tokenizer tokenizer(&settings, this, &preprocessor);
153+
Tokenizer tokenizer(settings, this, &preprocessor);
150154
tokenizer.createTokens(std::move(tokens2));
151155
tokenizer.simplifyTokens1("");
152156

153157
// Run checks..
154-
runChecks<CheckCondition>(&tokenizer, &settings, this);
158+
runChecks<CheckCondition>(&tokenizer, settings, this);
155159
}
156160

157161
void check(const char code[], const char* filename = "test.cpp", bool inconclusive = false) {
158-
Settings settings = settingsBuilder(settings0).certainty(Certainty::inconclusive, inconclusive).build();
159-
check(code, settings, filename);
162+
settings0.certainty.setEnabled(Certainty::inconclusive, inconclusive);
163+
check(code, &settings0, filename);
160164
}
161165

162166
void assignAndCompare() {
@@ -5631,69 +5635,70 @@ class TestCondition : public TestFixture {
56315635
}
56325636

56335637
void compareOutOfTypeRange() {
5634-
Settings settingsUnix64 = settingsBuilder().severity(Severity::style).platform(cppcheck::Platform::Type::Unix64).build();
5638+
Settings settingsUnix64 = settingsBuilder().severity(Severity::style).build();
5639+
PLATFORM(settingsUnix64.platform, cppcheck::Platform::Type::Unix64);
56355640

56365641
check("void f(unsigned char c) {\n"
56375642
" if (c == 256) {}\n"
5638-
"}", settingsUnix64);
5643+
"}", &settingsUnix64);
56395644
ASSERT_EQUALS("[test.cpp:2]: (style) Comparing expression of type 'unsigned char' against value 256. Condition is always false.\n", errout.str());
56405645

56415646
check("void f(unsigned char* b, int i) {\n" // #6372
56425647
" if (b[i] == 256) {}\n"
5643-
"}", settingsUnix64);
5648+
"}", &settingsUnix64);
56445649
ASSERT_EQUALS("[test.cpp:2]: (style) Comparing expression of type 'unsigned char' against value 256. Condition is always false.\n", errout.str());
56455650

56465651
check("void f(unsigned char c) {\n"
56475652
" if (c == 255) {}\n"
5648-
"}", settingsUnix64);
5653+
"}", &settingsUnix64);
56495654
ASSERT_EQUALS("", errout.str());
56505655

56515656
check("void f(bool b) {\n"
56525657
" if (b == true) {}\n"
5653-
"}", settingsUnix64);
5658+
"}", &settingsUnix64);
56545659
ASSERT_EQUALS("", errout.str());
56555660

56565661
// #10372
56575662
check("void f(signed char x) {\n"
56585663
" if (x == 0xff) {}\n"
5659-
"}", settingsUnix64);
5664+
"}", &settingsUnix64);
56605665
ASSERT_EQUALS("[test.cpp:2]: (style) Comparing expression of type 'signed char' against value 255. Condition is always false.\n", errout.str());
56615666

56625667
check("void f(short x) {\n"
56635668
" if (x == 0xffff) {}\n"
5664-
"}", settingsUnix64);
5669+
"}", &settingsUnix64);
56655670
ASSERT_EQUALS("[test.cpp:2]: (style) Comparing expression of type 'signed short' against value 65535. Condition is always false.\n", errout.str());
56665671

56675672
check("void f(int x) {\n"
56685673
" if (x == 0xffffffff) {}\n"
5669-
"}", settingsUnix64);
5674+
"}", &settingsUnix64);
56705675
ASSERT_EQUALS("", errout.str());
56715676

56725677
check("void f(long x) {\n"
56735678
" if (x == ~0L) {}\n"
5674-
"}", settingsUnix64);
5679+
"}", &settingsUnix64);
56755680
ASSERT_EQUALS("", errout.str());
56765681

56775682
check("void f(long long x) {\n"
56785683
" if (x == ~0LL) {}\n"
5679-
"}", settingsUnix64);
5684+
"}", &settingsUnix64);
56805685
ASSERT_EQUALS("", errout.str());
56815686

56825687
check("int f(int x) {\n"
56835688
" const int i = 0xFFFFFFFF;\n"
56845689
" if (x == i) {}\n"
5685-
"}", settingsUnix64);
5690+
"}", &settingsUnix64);
56865691
ASSERT_EQUALS("", errout.str());
56875692

56885693
check("void f() {\n"
56895694
" char c;\n"
56905695
" if ((c = foo()) != -1) {}\n"
5691-
"}", settingsUnix64);
5696+
"}", &settingsUnix64);
56925697
ASSERT_EQUALS("", errout.str());
56935698

56945699
check("void f(int x) {\n"
56955700
" if (x < 3000000000) {}\n"
5696-
"}", settingsUnix64);
5701+
"}", &settingsUnix64);
56975702
ASSERT_EQUALS("[test.cpp:2]: (style) Comparing expression of type 'signed int' against value 3000000000. Condition is always true.\n", errout.str());
56985703

56995704
check("void f(const signed char i) {\n" // #8545
@@ -5703,7 +5708,7 @@ class TestCondition : public TestFixture {
57035708
" if (i < +128) {}\n" // warn
57045709
" if (i <= +127) {}\n" // warn
57055710
" if (i <= +126) {}\n"
5706-
"}\n", settingsUnix64);
5711+
"}\n", &settingsUnix64);
57075712
ASSERT_EQUALS("[test.cpp:2]: (style) Comparing expression of type 'const signed char' against value -129. Condition is always true.\n"
57085713
"[test.cpp:3]: (style) Comparing expression of type 'const signed char' against value -128. Condition is always true.\n"
57095714
"[test.cpp:5]: (style) Comparing expression of type 'const signed char' against value 128. Condition is always true.\n"
@@ -5727,7 +5732,7 @@ class TestCondition : public TestFixture {
57275732
" if (255 > u) {}\n"
57285733
" if (255 <= u) {}\n"
57295734
" if (255 >= u) {}\n" // warn
5730-
"}\n", settingsUnix64);
5735+
"}\n", &settingsUnix64);
57315736
ASSERT_EQUALS("[test.cpp:3]: (style) Comparing expression of type 'const unsigned char' against value 0. Condition is always false.\n"
57325737
"[test.cpp:4]: (style) Comparing expression of type 'const unsigned char' against value 0. Condition is always true.\n"
57335738
"[test.cpp:6]: (style) Comparing expression of type 'const unsigned char' against value 255. Condition is always false.\n"

test/testconstructors.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1493,7 +1493,6 @@ class TestConstructors : public TestFixture {
14931493
}
14941494

14951495
void initvar_private_constructor() {
1496-
const Settings settingsOld = settings;
14971496
settings.standards.cpp = Standards::CPP11;
14981497
check("class Fred\n"
14991498
"{\n"
@@ -1515,7 +1514,6 @@ class TestConstructors : public TestFixture {
15151514
"Fred::Fred()\n"
15161515
"{ }");
15171516
ASSERT_EQUALS("", errout.str());
1518-
settings = settingsOld;
15191517
}
15201518

15211519
void initvar_copy_constructor() { // ticket #1611
@@ -3113,7 +3111,8 @@ class TestConstructors : public TestFixture {
31133111
}
31143112

31153113
void uninitVarArray10() { // #11650
3116-
const Settings s = settingsBuilder(settings).library("std.cfg").build();
3114+
Settings s(settings);
3115+
LOAD_LIB_2(s.library, "std.cfg");
31173116
check("struct T { int j; };\n"
31183117
"struct U { int k{}; };\n"
31193118
"struct S {\n"

0 commit comments

Comments
 (0)