From 2f3bc9c4b0a1518c49ef90c87d8c86cac592b543 Mon Sep 17 00:00:00 2001
From: Dan Hirsch <thequux@upstandinghackers.com>
Date: Thu, 5 Dec 2013 08:41:28 +0100
Subject: [PATCH] Perl tests are now part of the build system

---
 SConstruct                     |  4 +++-
 src/bindings/perl/SConscript   | 25 ++++++++++++++++++++-----
 src/bindings/python/SConscript |  4 ++--
 src/test_suite.c               |  3 ++-
 4 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/SConstruct b/SConstruct
index 893dd418..ab0aaf08 100644
--- a/SConstruct
+++ b/SConstruct
@@ -114,6 +114,8 @@ else:
     lib = env.SConscript(["src/SConscript"])
     env.Alias(env.SConscript(["examples/SConscript"]))
 
-env.Alias("test", testruns)
+print testruns
+for testrun in testruns:
+    env.Alias("test", testrun)
 
 env.Alias("install", targets)
diff --git a/src/bindings/perl/SConscript b/src/bindings/perl/SConscript
index 52bc4bc5..90e6afcc 100644
--- a/src/bindings/perl/SConscript
+++ b/src/bindings/perl/SConscript
@@ -1,19 +1,34 @@
 # -*- python -*-
-Import("env libhammer_shared")
+import os.path
+Import("env libhammer_shared testruns targets")
 
 perlenv = env.Clone()
 
-perlenv.Append(CCFLAGS=["-fpic", '-DSWIG', '-Wno-all', '-Wno-extra', '-Wno-error', '-DHAMMER_INTERNAL__NO_STDARG_H'],
+perlenv.Append(CCFLAGS=["-fpic", '-DSWIG', '-Wno-all',
+                        '-Wno-extra', '-Wno-error',
+                        '-DHAMMER_INTERNAL__NO_STDARG_H'],
                CPPPATH=["../.."],
                LIBS=['hammer'],
                LIBPATH=["../.."],
-               SWIGFLAGS=["-DHAMMER_INTERNAL__NO_STDARG_H", "-Isrc/", "-perl"])
+               SWIGFLAGS=["-DHAMMER_INTERNAL__NO_STDARG_H",
+                          "-Isrc/", "-perl"])
 
-perlenv.ParseConfig("perl -MConfig -e 'print(qq[-I$$Config{archlib}/CORE\n]);'")
-perlenv.ParseConfig("perl -MConfig -e 'print($$Config{ccflags} . \"\n\");'")
+perlenv.ParseConfig("perl -MConfig -e'print(qq[-I$$Config{archlib}/CORE\n]);'")
+perlenv.ParseConfig("perl -MConfig -e'print($$Config{ccflags} . \"\n\");'")
 
 swig = ['hammer.i']
 
 libhammer_perl = perlenv.SharedLibrary('hammer', swig, SHLIBPREFIX='')
 
+Default(libhammer_perl)
+
+perltestenv = perlenv.Clone()
+perltestenv['ENV']['LD_LIBRARY_PATH'] = os.path.dirname(str(libhammer_shared[0]))
+perltests = ['t/hammer.t']
+perltestexec = perltestenv.Command(None, perltests + libhammer_perl + libhammer_shared, "pwd && prove -I%(perldir)s %(perldir)s/t" % dict(perldir=os.path.dirname(str(libhammer_perl[0].path))))
+perltest = Alias("testperl", [perltestexec], perltestexec)
+AlwaysBuild(perltestexec)
+testruns.append(perltest)
+
+
 print "Reading perl sconscript"
diff --git a/src/bindings/python/SConscript b/src/bindings/python/SConscript
index d91a9423..e7b956fa 100644
--- a/src/bindings/python/SConscript
+++ b/src/bindings/python/SConscript
@@ -15,8 +15,8 @@ pytestenv['ENV']['LD_LIBRARY_PATH'] = os.path.dirname(str(libhammer_shared[0]))
 pytests = ['hammer_tests.py']
 pytestexec = pytestenv.Command(['hammer.pyc', 'hammer_tests.pyc'], pytests + libhammer_python, "LD_LIBRARY_PATH=" + os.path.dirname(str(libhammer_shared[0])) + " nosetests -vv $SOURCE")
 pytest = Alias("testpython", [pytestexec], pytestexec)
-AlwaysBuild(pytest)
-testruns.append(pytest)
+AlwaysBuild(pytestexec)
+testruns.extend(pytest)
 
 pyinstallexec = pythonenv.Command(None, libhammer_python, 'python ' + os.path.join(pydir, 'setup.py ') + ' install')
 pyinstall = Alias("installpython", [pyinstallexec], pyinstallexec)
diff --git a/src/test_suite.c b/src/test_suite.c
index e065f138..81f86b2c 100644
--- a/src/test_suite.c
+++ b/src/test_suite.c
@@ -35,7 +35,8 @@ int main(int argc, char** argv) {
   register_parser_tests();
   register_grammar_tests();
   register_misc_tests();
-  register_benchmark_tests();
+  if (g_test_slow() || g_test_perf())
+    register_benchmark_tests();
 
   g_test_run();
 }
-- 
GitLab