summaryrefslogtreecommitdiffstats
path: root/QA
diff options
context:
space:
mode:
Diffstat (limited to 'QA')
-rw-r--r--QA/.gitignore2
-rw-r--r--QA/Checker/SConscript14
-rw-r--r--QA/Checker/checker.cpp73
-rw-r--r--QA/SConscript4
-rw-r--r--QA/UnitTest/.gitignore1
-rw-r--r--QA/UnitTest/SConscript30
-rw-r--r--QA/UnitTest/template/FooTest.cpp22
-rw-r--r--QA/valgrind.supp51
8 files changed, 197 insertions, 0 deletions
diff --git a/QA/.gitignore b/QA/.gitignore
new file mode 100644
index 0000000..e0292b1
--- /dev/null
+++ b/QA/.gitignore
@@ -0,0 +1,2 @@
+*.o
+*.a
diff --git a/QA/Checker/SConscript b/QA/Checker/SConscript
new file mode 100644
index 0000000..0456b93
--- /dev/null
+++ b/QA/Checker/SConscript
@@ -0,0 +1,14 @@
+Import("env")
+
+if env["TEST"] :
+ if env["SCONS_STAGE"] == "flags" :
+ env["CHECKER_FLAGS"] = {
+ "LIBS": ["Checker"],
+ "LIBPATH": [Dir(".")],
+ "LINKFLAGS": ["/SUBSYSTEM:CONSOLE"] if env["PLATFORM"] == "win32" else []
+ }
+
+ if env["SCONS_STAGE"] == "build" :
+ checker_env = env.Clone()
+ checker_env.MergeFlags(env["CPPUNIT_FLAGS"])
+ checker_env.Library("Checker", "checker.cpp")
diff --git a/QA/Checker/checker.cpp b/QA/Checker/checker.cpp
new file mode 100644
index 0000000..b59cea6
--- /dev/null
+++ b/QA/Checker/checker.cpp
@@ -0,0 +1,73 @@
+#include <string>
+#include <cppunit/ui/text/TestRunner.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/XmlOutputter.h>
+#include <cppunit/TextTestResult.h>
+#include <cppunit/BriefTestProgressListener.h>
+#include <cppunit/TextTestProgressListener.h>
+#include <cppunit/TextOutputter.h>
+
+int main(int argc, char* argv[]) {
+ bool verbose = false;
+ bool outputXML = false;
+
+ // Parse parameters
+ std::vector<std::string> testsToRun;
+ for (int i = 1; i < argc; ++i) {
+ std::string param(argv[i]);
+ if (param == "--verbose") {
+ verbose = true;
+ }
+ else if (param == "--xml") {
+ outputXML = true;
+ }
+ else {
+ testsToRun.push_back(param);
+ }
+ }
+ if (testsToRun.empty()) {
+ testsToRun.push_back("");
+ }
+
+ // Set up the listeners
+ CppUnit::TestResult controller;
+
+ CppUnit::TestResultCollector result;
+ controller.addListener(&result);
+
+ CppUnit::TextTestProgressListener progressListener;
+ CppUnit::BriefTestProgressListener verboseListener;
+ if (!outputXML) {
+ if (verbose) {
+ controller.addListener(&verboseListener);
+ }
+ else {
+ controller.addListener(&progressListener);
+ }
+ }
+
+ // Run the tests
+ CppUnit::TestRunner runner;
+ runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
+ for (std::vector<std::string>::const_iterator i = testsToRun.begin(); i != testsToRun.end(); ++i) {
+ try {
+ runner.run(controller, *i);
+ }
+ catch (const std::exception& e) {
+ std::cerr << "Error: " << e.what() << std::endl;
+ return -1;
+ }
+ }
+
+ // Output the results
+ if (outputXML) {
+ CppUnit::XmlOutputter outputter(&result, std::cerr);
+ outputter.write();
+ }
+ else {
+ CppUnit::TextOutputter outputter(&result, std::cerr);
+ outputter.write();
+ }
+
+ return result.wasSuccessful() ? 0 : 1;
+}
diff --git a/QA/SConscript b/QA/SConscript
new file mode 100644
index 0000000..5c626e3
--- /dev/null
+++ b/QA/SConscript
@@ -0,0 +1,4 @@
+SConscript(dirs = [
+ "Checker",
+ "UnitTest"
+ ])
diff --git a/QA/UnitTest/.gitignore b/QA/UnitTest/.gitignore
new file mode 100644
index 0000000..fbbdd5f
--- /dev/null
+++ b/QA/UnitTest/.gitignore
@@ -0,0 +1 @@
+checker
diff --git a/QA/UnitTest/SConscript b/QA/UnitTest/SConscript
new file mode 100644
index 0000000..dc4dbfc
--- /dev/null
+++ b/QA/UnitTest/SConscript
@@ -0,0 +1,30 @@
+import os
+
+Import("env")
+
+if env["TEST"] :
+ if env["SCONS_STAGE"] == "flags" :
+ env["UNITTEST_SOURCES"] = []
+ if env["SCONS_STAGE"] == "test" :
+ myenv = env.Clone()
+ myenv.MergeFlags(env["CHECKER_FLAGS"])
+ myenv.MergeFlags(env["SLIMBER_FLAGS"])
+ myenv.MergeFlags(env["SWIFT_CONTROLLERS_FLAGS"])
+ myenv.MergeFlags(env["SWIFTOOLS_FLAGS"])
+ myenv.MergeFlags(env["SWIFTEN_FLAGS"])
+ myenv.MergeFlags(env["CPPUNIT_FLAGS"])
+ myenv.MergeFlags(env["LIBIDN_FLAGS"])
+ myenv.MergeFlags(env["BOOST_FLAGS"])
+ myenv.MergeFlags(env.get("SQLITE_FLAGS", ""))
+ myenv.MergeFlags(env.get("LIBXML_FLAGS", ""))
+ myenv.MergeFlags(env.get("EXPAT_FLAGS", ""))
+ myenv.MergeFlags(env["ZLIB_FLAGS"])
+ if env.get("HAVE_LIBXML") :
+ myenv.Append(CPPDEFINES = ["HAVE_LIBXML"])
+ if env.get("HAVE_EXPAT") :
+ myenv.Append(CPPDEFINES = ["HAVE_EXPAT"])
+ checker = myenv.Program("checker", env["UNITTEST_SOURCES"])
+ for i in ["HOME", "USERPROFILE", "APPDATA"]:
+ if os.environ.get(i, "") :
+ myenv["ENV"][i] = os.environ[i]
+ myenv.Test(checker)
diff --git a/QA/UnitTest/template/FooTest.cpp b/QA/UnitTest/template/FooTest.cpp
new file mode 100644
index 0000000..9657360
--- /dev/null
+++ b/QA/UnitTest/template/FooTest.cpp
@@ -0,0 +1,22 @@
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+
+using namespace Swift;
+
+class FooTest : public CppUnit::TestFixture {
+ CPPUNIT_TEST_SUITE(FooTest);
+ CPPUNIT_TEST(testBar);
+ CPPUNIT_TEST_SUITE_END();
+
+ public:
+ void setUp() {
+ }
+
+ void tearDown() {
+ }
+
+ void testBar() {
+ }
+};
+
+CPPUNIT_TEST_SUITE_REGISTRATION(FooTest);
diff --git a/QA/valgrind.supp b/QA/valgrind.supp
new file mode 100644
index 0000000..5e2ee00
--- /dev/null
+++ b/QA/valgrind.supp
@@ -0,0 +1,51 @@
+{
+ ZLib doesn't allocate its buffer. This is no bug according to the FAQ.
+ Memcheck:Cond
+ fun:longest_match
+ fun:deflate_slow
+ fun:deflate
+}
+
+{
+ Not sure why this happens.
+ Memcheck:Leak
+ fun:calloc
+ fun:_dl_allocate_tls
+ fun:pthread_create@@GLIBC_2.1
+ fun:_ZN5boost6thread12start_threadEv
+}
+
+{
+ <insert a suppression name here>
+ Memcheck:Param
+ socketcall.sendto(msg)
+ fun:sendto
+ fun:getaddrinfo
+}
+
+{
+ <insert a suppression name here>
+ Memcheck:Cond
+ fun:BN_bin2bn
+}
+
+{
+ <insert a suppression name here>
+ Memcheck:Cond
+ fun:BN_num_bits_word
+}
+
+{
+ <insert a suppression name here>
+ Memcheck:Value4
+ fun:BN_mod_exp_mont_consttime
+ fun:BN_mod_exp_mont
+}
+
+{
+ <insert a suppression name here>
+ Memcheck:Value4
+ fun:BN_num_bits_word
+ fun:BN_mod_exp_mont_consttime
+ fun:BN_mod_exp_mont
+}