tests: Add a pseudo target to run all the unit tests for build/variant.
authorGabe Black <gabeblack@google.com>
Sun, 3 Dec 2017 10:10:42 +0000 (02:10 -0800)
committerGabe Black <gabeblack@google.com>
Thu, 7 Dec 2017 06:02:08 +0000 (06:02 +0000)
Telling scons to build build/${BUILD_OPTS}/unittests.${VARIANT} will
get it to build and run all googletest based unit tests under the
${BUILD_OPTS} build options (ARM, ALPHA, X86, etc.), and compiled with
the flags, etc., for the ${VARIANT} variant (ie. opt, debug, etc.).

This will make it easy to run the unit tests without having to actually
know where they are, what tests are available, etc.

This target is called unittests* and not something based on gtest or
googletest since it's my intention for all unit tests to be based on
googletest, making the distinction unnecessary. Since the target is
essentially part of the external interface for scons, I wanted to name
it something general so it'll be less likely that we have to change it.

Change-Id: I8fdec768d821974309c92a2ce4c96dce7df24fa5
Reviewed-on: https://gem5-review.googlesource.com/6282
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/SConscript

index 961df49d9112f94593ca5a762a5fb7893e9e1d39..cd42c27c50365e74ce6e26da2837c59a578f3cf2 100755 (executable)
@@ -1049,11 +1049,15 @@ def makeEnv(env, label, objsfx, strip=False, disable_partial=False, **kwargs):
     gtest_env = new_env.Clone()
     gtest_env.Append(LIBS=gtest_env['GTEST_LIBS'])
     gtest_env.Append(CPPFLAGS=gtest_env['GTEST_CPPFLAGS'])
+    gtests = []
     for test in GTest.all:
         test_sources = Source.all.with_tag(str(test.target))
         test_objs = [ s.static(gtest_env) for s in test_sources ]
-        gtest_env.Program(test.dir.File('%s.%s' % (test.target, label)),
-                          test_objs)
+        gtests.append(gtest_env.Program(
+            test.dir.File('%s.%s' % (test.target, label)), test_objs))
+
+    gtest_target = Dir(new_env['BUILDDIR']).File('unittests.%s' % label)
+    AlwaysBuild(Command(gtest_target, gtests, gtests))
 
     progname = exename
     if strip: