FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cppcheck/test/testsamples.cpp at master · encryptacoder/cppcheck · GitHub
encryptacoder
/
cppcheck
Public
forked from
cppcheck-opensource/cppcheck
Notifications
You must be signed in to change notification settings
Fork
0
Star
1
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cppcheck
/
test
/
testsamples.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
83 lines (74 loc) · 2.98 KB
Breadcrumbs
cppcheck
/
test
/
testsamples.cpp
Copy path
File metadata and controls
83 lines (74 loc) · 2.98 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2015 Daniel Marjamäki and Cppcheck team.
*
* 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 3 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/>.
*/
#
include
"
filelister.h
"
#
include
"
testsuite.h
"
#
include
"
cppcheckexecutor.h
"
#
include
<
fstream
>
#
include
<
cstring
>
#
include
<
algorithm
>
class
TestSamples
:
public
TestFixture
{
public:
TestSamples
() : TestFixture(
"
TestSamples
"
) {
}
private:
void
run
() {
TEST_CASE
(runSamples);
}
void
runSamples
()
const
{
REDIRECT
;
std::map<std::string, std::
size_t
> files;
#
ifdef
_WIN32
FileLister::recursiveAddFiles
(files,
"
..
\\
samples
"
);
#
else
FileLister::recursiveAddFiles
(files,
"
samples
"
);
#
endif
for
(std::map<std::string, std::
size_t
>::const_iterator i = files.
begin
(); i != files.
end
(); ++i) {
CLEAR_REDIRECT_ERROUT
;
char
* path =
new
char
[i->
first
.
size
() +
1
];
strcpy
(path, i->
first
.
c_str
());
const
char
* argv[] = {
#
ifdef
_WIN32
"
.
\\
..
\\
testrunner
"
,
#
else
"
./testrunner
"
,
#
endif
"
--enable=style,warning,performance,portability
"
,
"
--inconclusive
"
,
"
-rp
"
,
"
-f
"
,
"
-q
"
, path
};
std::string filename = i->
first
.
substr
(i->
first
.
find_last_of
(
"
/
\\
"
)+
1
);
if
(filename ==
"
good.cpp
"
|| filename ==
"
good.c
"
) {
CppCheckExecutor exec;
exec.
check
(
7
, argv);
ASSERT_EQUALS_MSG
(
"
"
,
GET_REDIRECT_ERROUT
, i->
first
);
}
else
if
(filename ==
"
bad.cpp
"
|| filename ==
"
bad.c
"
) {
CppCheckExecutor exec;
exec.
check
(
7
, argv);
std::string expected_filename =
Path::getPathFromFilename
(i->
first
) +
"
out.txt
"
;
std::ifstream
ifs
(expected_filename.
c_str
());
std::string
expected
((std::istreambuf_iterator<
char
>(ifs)), std::istreambuf_iterator<
char
>());
std::string actual =
GET_REDIRECT_ERROUT
;
//
We need some uniformization to make this work on Unix and Windows
std::replace
(actual.
begin
(), actual.
end
(),
'
/
'
,
'
\\
'
);
//
Uniformize slashes.
while
(actual.
find
(
"
..
\\
"
) != std::string::npos)
actual.
erase
(actual.
find
(
"
..
\\
"
),
3
);
//
Remove '..\'
ASSERT_EQUALS_MSG
(expected, actual, i->
first
);
}
delete[]
path;
}
}
};
REGISTER_TEST
(TestSamples)
Back
|
FazBrowse Home
|
New Git URL