File indexing completed on 2024-05-19 04:40:44
0001 /* 0002 SPDX-FileCopyrightText: 2016 Anton Anikin <anton.anikin@htower.ru> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "test_cppcheckjob.h" 0008 0009 #include <QTest> 0010 #include <tests/testcore.h> 0011 #include <tests/autotestshell.h> 0012 0013 #include "job.h" 0014 #include "parameters.h" 0015 0016 using namespace KDevelop; 0017 using namespace cppcheck; 0018 0019 class JobTester : public Job 0020 { 0021 Q_OBJECT 0022 0023 public: 0024 explicit JobTester(const Parameters& params) : Job(params) {} 0025 0026 using Job::postProcessStdout; 0027 using Job::postProcessStderr; 0028 0029 QString standardOutput() const { return m_standardOutput.join('\n'); } 0030 QString xmlOutput() const { return m_xmlOutput.join('\n'); } 0031 }; 0032 0033 void TestCppcheckJob::initTestCase() 0034 { 0035 AutoTestShell::init({"kdevcppcheck"}); 0036 TestCore::initialize(Core::NoUi); 0037 } 0038 0039 void TestCppcheckJob::cleanupTestCase() 0040 { 0041 TestCore::shutdown(); 0042 } 0043 0044 void TestCppcheckJob::testJob() 0045 { 0046 QStringList stdoutOutput = { 0047 "Checking source1.cpp...", 0048 "1/2 files checked 50% done", 0049 "Checking source2.cpp...", 0050 "2/2 files checked 50% done" 0051 }; 0052 0053 QStringList stderrOutput = { 0054 "(information) Couldn't find path given by -I '/missing_include_dir_1/'", 0055 "(information) Couldn't find path given by -I '/missing_include_dir_2/'", 0056 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>", 0057 "<results version=\"2\">", 0058 " <cppcheck version=\"1.72\"/>", 0059 " <errors>", 0060 " <error id=\"missingInclude\" severity=\"information\" msg=\"msg...\" verbose=\"verbose...\"/>", 0061 " </errors>", 0062 "</results>" 0063 }; 0064 0065 Parameters jobParams; 0066 JobTester jobTester(jobParams); 0067 0068 jobTester.postProcessStderr(stderrOutput); 0069 jobTester.postProcessStdout(stdoutOutput); 0070 0071 // move non-XML elements from stderrOutput 0072 stdoutOutput.push_front(stderrOutput[1]); 0073 stdoutOutput.push_front(stderrOutput[0]); 0074 stderrOutput.pop_front(); 0075 stderrOutput.pop_front(); 0076 0077 QCOMPARE(jobTester.standardOutput(), stdoutOutput.join('\n')); 0078 QCOMPARE(jobTester.xmlOutput(), stderrOutput.join('\n')); 0079 } 0080 0081 QTEST_GUILESS_MAIN(TestCppcheckJob) 0082 0083 #include "test_cppcheckjob.moc" 0084 #include "moc_test_cppcheckjob.cpp"