scons: Add a "check" target to run all unit tests.
authorJose Fonseca <jfonseca@vmware.com>
Wed, 13 Apr 2016 12:31:04 +0000 (13:31 +0100)
committerJose Fonseca <jfonseca@vmware.com>
Thu, 14 Apr 2016 06:19:04 +0000 (07:19 +0100)
Except:
- u_cache_test -- too long
- translate_test -- unreliable (it's probably testing corner cases that
  translate module doesn't care about.)

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
SConstruct
scons/gallium.py
src/gallium/drivers/llvmpipe/SConscript
src/gallium/tests/unit/SConscript
src/util/SConscript

index ef71ab69c3844cd0a3837f76f34d639ea460cd79..e2e49fcc6ca4aa93f75440517ed89f99cca6dab9 100644 (file)
@@ -84,6 +84,11 @@ env.Append(CPPPATH = [
 #print env.Dump()
 
 
+# Add a check target for running tests
+check = env.Alias('check')
+env.AlwaysBuild(check)
+
+
 #######################################################################
 # Invoke host SConscripts 
 # 
index f37042d9af10d53888256f45660c717dd6e49d8b..94321b2e8473e988b8b2675d92975949b2ee5146 100755 (executable)
@@ -82,11 +82,6 @@ def install_shared_library(env, sources, version = ()):
     return targets
 
 
-def createInstallMethods(env):
-    env.AddMethod(install_program, 'InstallProgram')
-    env.AddMethod(install_shared_library, 'InstallSharedLibrary')
-
-
 def msvc2013_compat(env):
     if env['gcc']:
         env.Append(CCFLAGS = [
@@ -94,8 +89,20 @@ def msvc2013_compat(env):
             '-Werror=pointer-arith',
         ])
 
-def createMSVCCompatMethods(env):
-    env.AddMethod(msvc2013_compat, 'MSVC2013Compat')
+
+def unit_test(env, test_name, program_target, args=None):
+    env.InstallProgram(program_target)
+
+    cmd = [program_target[0].abspath]
+    if args is not None:
+        cmd += args
+    cmd = ' '.join(cmd)
+
+    # http://www.scons.org/wiki/UnitTests
+    action = SCons.Action.Action(cmd, "  Running %s ..." % test_name)
+    alias = env.Alias(test_name, program_target, action)
+    env.AlwaysBuild(alias)
+    env.Depends('check', alias)
 
 
 def num_jobs():
@@ -667,8 +674,10 @@ def generate(env):
     
     # Custom builders and methods
     env.Tool('custom')
-    createInstallMethods(env)
-    createMSVCCompatMethods(env)
+    env.AddMethod(install_program, 'InstallProgram')
+    env.AddMethod(install_shared_library, 'InstallSharedLibrary')
+    env.AddMethod(msvc2013_compat, 'MSVC2013Compat')
+    env.AddMethod(unit_test, 'UnitTest')
 
     env.PkgCheckModules('X11', ['x11', 'xext', 'xdamage', 'xfixes', 'glproto >= 1.4.13'])
     env.PkgCheckModules('XCB', ['x11-xcb', 'xcb-glx >= 1.8.1', 'xcb-dri2 >= 1.8'])
index 8188156afc2f736620faaf765a1f5dd0eb81a31a..fbbd22a52999bde27f7df429a4ed13d37dfce814 100644 (file)
@@ -38,10 +38,6 @@ if not env['embedded']:
             target = testname,
             source = [testname + '.c', 'lp_test_main.c'],
         )
-        env.InstallProgram(target)
-        
-        # http://www.scons.org/wiki/UnitTests
-        alias = env.Alias(testname, [target], target[0].abspath)
-        AlwaysBuild(alias)
+        env.UnitTest(testname, target)
 
 Export('llvmpipe')
index a816e2fea41fd5d4964f594817b5929b61303cdd..0650804018bedff1a4a10d010f0f27fc463415bb 100644 (file)
@@ -24,10 +24,8 @@ for progname in progs:
         target = progname,
         source = progname + '.c',
     )
-    
-    env.Alias(progname, env.InstallProgram(prog))
-
-    # http://www.scons.org/wiki/UnitTests
-    test_alias = env.Alias('unit', [prog], prog[0].abspath)
-    AlwaysBuild(test_alias)
-
+    if progname not in [
+        'u_cache_test', # too long
+        'translate_test', # unreliable
+    ]:
+       env.UnitTest(progname, prog)
index 5f3ecc1cdfce99714f0bbd629c94938f356191e1..73f34303976a0943455bdc49e10c97b4d84e1e4a 100644 (file)
@@ -47,17 +47,14 @@ env.Alias('mesautil', mesautil)
 Export('mesautil')
 
 
-# http://www.scons.org/wiki/UnitTests
 u_atomic_test = env.Program(
     target = 'u_atomic_test',
     source = ['u_atomic_test.c'],
 )
-alias = env.Alias("u_atomic_test", u_atomic_test, u_atomic_test[0].abspath)
-AlwaysBuild(alias)
+env.UnitTest("u_atomic_test", u_atomic_test)
 
 roundeven_test = env.Program(
     target = 'roundeven_test',
     source = ['roundeven_test.c'],
 )
-alias = env.Alias("roundeven_test", roundeven_test, roundeven_test[0].abspath)
-AlwaysBuild(alias)
+env.UnitTest("roundeven_test", roundeven_test)