From b353fac98e08d8f225781b95e55b80aa67171262 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Sat, 31 Oct 2009 14:22:07 +0100 Subject: Added SCons test framework. diff --git a/BuildTools/SCons/Tools/Test.py b/BuildTools/SCons/Tools/Test.py new file mode 100644 index 0000000..aaed222 --- /dev/null +++ b/BuildTools/SCons/Tools/Test.py @@ -0,0 +1,13 @@ +import SCons.Util + +def generate(env) : + def registerTest(env, target, type = "unit") : + if env["TEST_TYPE"] == "all" or env["TEST_TYPE"] == type : + cmd = target[0].abspath if SCons.Util.is_List(target) else target.abspath + env.Command("**dummy**", target, + SCons.Action.Action(env.get("TEST_RUNNER", "") + cmd, cmdstr = "$TESTCOMSTR")) + + env.AddMethod(registerTest, "Test") + +def exists(env) : + return True diff --git a/QA/Swiften/ClientTest/.gitignore b/QA/Swiften/ClientTest/.gitignore new file mode 100644 index 0000000..9fb3e67 --- /dev/null +++ b/QA/Swiften/ClientTest/.gitignore @@ -0,0 +1 @@ +ClientTest diff --git a/QA/Swiften/ClientTest/SConscript b/QA/Swiften/ClientTest/SConscript index 164de57..a9d9a19 100644 --- a/QA/Swiften/ClientTest/SConscript +++ b/QA/Swiften/ClientTest/SConscript @@ -2,21 +2,21 @@ import os Import("env") -myenv = env.Clone() -myenv.MergeFlags(env["SWIFTEN_FLAGS"]) -myenv.MergeFlags(env["CPPUNIT_FLAGS"]) -myenv.MergeFlags(env["LIBIDN_FLAGS"]) -myenv.MergeFlags(env["BOOST_FLAGS"]) -myenv.MergeFlags(env["SQLITE_FLAGS"]) -myenv.MergeFlags(env["ZLIB_FLAGS"]) -myenv.MergeFlags(env["OPENSSL_FLAGS"]) -myenv.MergeFlags(env.get("LIBXML_FLAGS", "")) -myenv.MergeFlags(env.get("EXPAT_FLAGS", "")) +if env["TEST"] : + myenv = env.Clone() + myenv.MergeFlags(env["SWIFTEN_FLAGS"]) + myenv.MergeFlags(env["CPPUNIT_FLAGS"]) + myenv.MergeFlags(env["LIBIDN_FLAGS"]) + myenv.MergeFlags(env["BOOST_FLAGS"]) + myenv.MergeFlags(env["SQLITE_FLAGS"]) + myenv.MergeFlags(env["ZLIB_FLAGS"]) + myenv.MergeFlags(env["OPENSSL_FLAGS"]) + myenv.MergeFlags(env.get("LIBXML_FLAGS", "")) + myenv.MergeFlags(env.get("EXPAT_FLAGS", "")) -for i in ["SWIFT_CLIENTTEST_JID", "SWIFT_CLIENTTEST_PASS"]: - if os.environ.get(i, "") : - myenv["ENV"][i] = os.environ[i] + for i in ["SWIFT_CLIENTTEST_JID", "SWIFT_CLIENTTEST_PASS"]: + if os.environ.get(i, "") : + myenv["ENV"][i] = os.environ[i] -tester = myenv.Program("ClientTest", ["ClientTest.cpp"]) -clientTest = myenv.Alias("ClientTest", tester, env.get("TEST_RUNNER", "") + tester[0].abspath) -env.AlwaysBuild(clientTest) + tester = myenv.Program("ClientTest", ["ClientTest.cpp"]) + myenv.Test(tester, "system") diff --git a/QA/Swiften/NetworkTest/SConscript b/QA/Swiften/NetworkTest/SConscript index fa5122b..cf66a68 100644 --- a/QA/Swiften/NetworkTest/SConscript +++ b/QA/Swiften/NetworkTest/SConscript @@ -2,17 +2,17 @@ import os Import("env") -myenv = env.Clone() -myenv.MergeFlags(env["CHECKER_FLAGS"]) -myenv.MergeFlags(env["SWIFTEN_FLAGS"]) -myenv.MergeFlags(env["CPPUNIT_FLAGS"]) -myenv.MergeFlags(env["BOOST_FLAGS"]) -myenv.MergeFlags(env["LIBIDN_FLAGS"]) +if env["TEST"] : + myenv = env.Clone() + myenv.MergeFlags(env["CHECKER_FLAGS"]) + myenv.MergeFlags(env["SWIFTEN_FLAGS"]) + myenv.MergeFlags(env["CPPUNIT_FLAGS"]) + myenv.MergeFlags(env["BOOST_FLAGS"]) + myenv.MergeFlags(env["LIBIDN_FLAGS"]) -tester = myenv.Program("NetworkTest", [ - "BoostConnectionServerTest.cpp", - "BoostConnectionTest.cpp", - "DomainNameResolverTest.cpp", - ]) -clientTest = myenv.Alias("NetworkTest", tester, env.get("TEST_RUNNER", "") + tester[0].abspath) -env.AlwaysBuild(clientTest) + tester = myenv.Program("NetworkTest", [ + "BoostConnectionServerTest.cpp", + "BoostConnectionTest.cpp", + "DomainNameResolverTest.cpp", + ]) + myenv.Test(tester, "system") diff --git a/QA/Swiften/SConscript b/QA/Swiften/SConscript index 6ee7365..ede7b39 100644 --- a/QA/Swiften/SConscript +++ b/QA/Swiften/SConscript @@ -1,10 +1,4 @@ -Import("env") - -tests = ["NetworkTest", "ClientTest"] -if "test" in COMMAND_LINE_TARGETS or env.GetOption("clean") or len(set(tests) & set(COMMAND_LINE_TARGETS)): - SConscript([ - "NetworkTest/SConscript", - "ClientTest/SConscript", - ]) - - test = env.Alias("test", tests) +SConscript([ + "NetworkTest/SConscript", + "ClientTest/SConscript", + ]) diff --git a/QA/UnitTest/SConscript b/QA/UnitTest/SConscript index 4911018..f93cdc2 100644 --- a/QA/UnitTest/SConscript +++ b/QA/UnitTest/SConscript @@ -12,7 +12,7 @@ env["CHECKER_FLAGS"] = { "LINKFLAGS": ["/SUBSYSTEM:CONSOLE"] if env["PLATFORM"] == "win32" else [] } -if "check" in COMMAND_LINE_TARGETS or env.GetOption("clean") : +if env["TEST"] : myenv = env.Clone() myenv.MergeFlags(env["CHECKER_FLAGS"]) myenv.MergeFlags(env["SLIMBER_FLAGS"]) @@ -33,5 +33,4 @@ if "check" in COMMAND_LINE_TARGETS or env.GetOption("clean") : for i in ["HOME", "USERPROFILE", "APPDATA"]: if os.environ.get(i, "") : myenv["ENV"][i] = os.environ[i] - check = myenv.Alias("check", checker, env.get("TEST_RUNNER", "") + checker[0].abspath) - myenv.AlwaysBuild(check) + myenv.Test(checker) diff --git a/SConstruct b/SConstruct index 1a737ed..6ee509a 100644 --- a/SConstruct +++ b/SConstruct @@ -6,6 +6,7 @@ sys.path.append(Dir("BuildTools/SCons").abspath) ################################################################################ vars = Variables("config.py") +vars.Add(EnumVariable("test", "Compile and run tests", "none", ["none", "all", "unit", "system"])) vars.Add(BoolVariable("optimize", "Compile with optimizations turned on", "no")) vars.Add(BoolVariable("debug", "Compile with debug information", "yes" if os.name != "nt" else "no")) vars.Add(BoolVariable("warnings", "Compile with warnings turned on", @@ -34,6 +35,7 @@ Help(vars.GenerateHelpText(env)) env.Alias("dist", ["."]) # Default custom tools +env.Tool("Test", toolpath = ["#/BuildTools/SCons/Tools"]) env.Tool("WriteVal", toolpath = ["#/BuildTools/SCons/Tools"]) env.Tool("BuildVersion", toolpath = ["#/BuildTools/SCons/Tools"]) if env["PLATFORM"] == "darwin" : @@ -82,9 +84,6 @@ if env.get("coverage", 0) : env.Append(CCFLAGS = ["-fprofile-arcs", "-ftest-coverage"]) env.Append(LINKFLAGS = ["-fprofile-arcs", "-ftest-coverage"]) -if env.get("valgrind", 0) : - env["TEST_RUNNER"] = "valgrind --suppressions=QA/valgrind.supp -q --leak-check=full --track-origins=yes " - if env["PLATFORM"] == "win32" : env.Append(LIBS = ["dnsapi", "ws2_32", "wsock32"]) env.Append(CCFLAGS = "/EHsc") @@ -94,6 +93,15 @@ if env["PLATFORM"] == "win32" : if env["PLATFORM"] == "darwin" : env.Append(FRAMEWORKS = "AppKit") +# Testing +env["TEST_TYPE"] = env["test"] +env.Alias("check", ".") +if "check" in ARGUMENTS or "check" in COMMAND_LINE_TARGETS : + env["TEST_TYPE"] = "unit" +env["TEST"] = (env["TEST_TYPE"] != "none") or env.GetOption("clean") +if env.get("valgrind", 0) : + env["TEST_RUNNER"] = "valgrind --suppressions=QA/valgrind.supp -q --leak-check=full --track-origins=yes " + # Packaging if ARGUMENTS.get("SWIFT_INSTALLDIR", "") : env["SWIFT_INSTALLDIR"] = Dir(ARGUMENTS["SWIFT_INSTALLDIR"]).abspath -- cgit v0.10.2-6-g49f6