summaryrefslogtreecommitdiffstats
path: root/QA
diff options
context:
space:
mode:
Diffstat (limited to 'QA')
-rw-r--r--QA/Checker/SConscript1
-rw-r--r--QA/Checker/checker.cpp46
-rw-r--r--QA/UnitTest/SConscript1
3 files changed, 45 insertions, 3 deletions
diff --git a/QA/Checker/SConscript b/QA/Checker/SConscript
index f8a3ce4..3b81ca4 100644
--- a/QA/Checker/SConscript
+++ b/QA/Checker/SConscript
@@ -20,4 +20,5 @@ if env["TEST"] :
checker_env.UseFlags(env["SWIFTEN_FLAGS"])
checker_env.UseFlags(env["BOOST_FLAGS"])
checker_env.UseFlags(env["CPPUNIT_FLAGS"])
+ checker_env.UseFlags(env["GOOGLETEST_FLAGS"])
checker_env.Library("Checker", ["checker.cpp", "IO.cpp"])
diff --git a/QA/Checker/checker.cpp b/QA/Checker/checker.cpp
index f1186cc..b23e7ff 100644
--- a/QA/Checker/checker.cpp
+++ b/QA/Checker/checker.cpp
@@ -4,7 +4,12 @@
* See the COPYING file for more information.
*/
+#include <cstdlib>
+#include <fstream>
#include <string>
+#include <sstream>
+
+#include <gtest/gtest.h>
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/TextOutputter.h>
@@ -39,10 +44,33 @@ int main(int argc, char* argv[]) {
testsToRun.push_back(param);
}
}
+
if (testsToRun.empty()) {
testsToRun.push_back("");
}
+ // generate output filenames for XML test output
+ std::string gtestOutputFilename;
+ std::string cppunitOutputFilename;
+
+ if (outputXML) {
+ auto programName = std::string(argv[0]);
+
+ std::stringstream outFileStringStreamGTest("");
+ outFileStringStreamGTest << "xml:" << programName << "-report.gtest.xml";
+ gtestOutputFilename = outFileStringStreamGTest.str();
+
+ std::stringstream outFileStringStreamCppUnit("");
+ outFileStringStreamCppUnit << programName << "-report.cppunit.xml";
+ cppunitOutputFilename = outFileStringStreamCppUnit.str();
+ }
+
+ if (outputXML && (std::getenv("GTEST_OUTPUT") == nullptr)) {
+ ::testing::GTEST_FLAG(output) = gtestOutputFilename;
+ }
+
+ ::testing::InitGoogleTest(&argc, argv);
+
// Set up the listeners
CppUnit::TestResult controller;
@@ -75,13 +103,25 @@ int main(int argc, char* argv[]) {
// Output the results
if (outputXML) {
- CppUnit::XmlOutputter outputter(&result, std::cout);
- outputter.write();
+ std::ofstream cppUnitXUnitOutputFile;
+ cppUnitXUnitOutputFile.open(cppunitOutputFilename, std::ofstream::out | std::ofstream::trunc);
+ if (cppUnitXUnitOutputFile.is_open()) {
+ CppUnit::XmlOutputter outputter(&result, cppUnitXUnitOutputFile);
+ outputter.write();
+ }
+ else {
+ std::cerr << "Failed to overwrite " << cppunitOutputFilename << " output file." << std::endl;
+ return 1;
+ }
}
else {
CppUnit::TextOutputter outputter(&result, std::cerr);
outputter.write();
}
- return result.wasSuccessful() ? 0 : 1;
+ auto googleTestWasSuccessful = RUN_ALL_TESTS() == 0 ? true : false;
+
+ auto cppUnitWasSuccessful = result.wasSuccessful() ? true : false;
+
+ return (googleTestWasSuccessful && cppUnitWasSuccessful) ? 0 : 1;
}
diff --git a/QA/UnitTest/SConscript b/QA/UnitTest/SConscript
index 1874f99..5dbd81c 100644
--- a/QA/UnitTest/SConscript
+++ b/QA/UnitTest/SConscript
@@ -16,6 +16,7 @@ if env["TEST"] :
myenv.UseFlags(env.get("LIMBER_FLAGS",""))
myenv.UseFlags(env.get("SWIFTEN_FLAGS",""))
myenv.UseFlags(env.get("CPPUNIT_FLAGS",""))
+ myenv.UseFlags(env.get("GOOGLETEST_FLAGS", ""))
myenv.UseFlags(env.get("SWIFTEN_DEP_FLAGS", ""))
if env.get("HAVE_LIBXML") :
myenv.Append(CPPDEFINES = ["HAVE_LIBXML"])