2013-07-05 09:40:11 -04:00
|
|
|
#!/usr/bin/python
|
2014-03-03 12:09:51 -05:00
|
|
|
|
2014-05-14 17:48:43 -04:00
|
|
|
import sys, os
|
|
|
|
Import("test_env")
|
2014-05-06 08:36:11 -04:00
|
|
|
tests = [
|
|
|
|
|
|
|
|
###
|
|
|
|
#
|
2014-05-26 19:10:24 -04:00
|
|
|
# (source.cpp, use collected lib_files?, [ other files ], [ other packages ])
|
2014-05-06 08:36:11 -04:00
|
|
|
#
|
|
|
|
|
2014-05-14 17:48:43 -04:00
|
|
|
("version.cpp", False, [], [ "glib-2.0" ]),
|
|
|
|
("file.cpp", True, [], []),
|
|
|
|
("database.cpp", True, [], []),
|
|
|
|
("index.cpp", True, [], []),
|
|
|
|
("filter.cpp", True, [], []),
|
|
|
|
("idle.cpp", False, [ "idle.cpp" ], []),
|
|
|
|
("tags.cpp", True, [], [ "taglib" ]),
|
2014-05-18 10:10:04 -04:00
|
|
|
("random.cpp", False, [ "random.cpp" ], []),
|
2014-05-18 11:08:58 -04:00
|
|
|
("queue.cpp", True, [ "callback.cpp", "random.cpp" ], []),
|
2014-05-24 12:47:33 -04:00
|
|
|
("library.cpp", True, [ "idle.cpp" ], []),
|
2014-05-18 21:09:46 -04:00
|
|
|
("playlist.cpp", True, [], []),
|
2014-05-26 19:10:24 -04:00
|
|
|
("deck.cpp", True, [], []),
|
2014-05-31 10:25:25 -04:00
|
|
|
("driver.cpp", False, [ "driver.cpp" ], []),
|
2014-06-01 17:52:49 -04:00
|
|
|
("audio.cpp", True, [ "driver.cpp" ], []),
|
2014-05-06 08:36:11 -04:00
|
|
|
|
|
|
|
]
|
|
|
|
|
2014-05-14 17:48:43 -04:00
|
|
|
env = test_env
|
|
|
|
env.UsePackage("glib-2.0")
|
2014-05-20 17:22:49 -04:00
|
|
|
if env.Coverage == True:
|
|
|
|
env.Append( CCFLAGS = [ "--coverage" ] )
|
|
|
|
env.Append( LINKFLAGS = [ "-lgcov", "-coverage" ] )
|
2014-04-13 18:39:56 -04:00
|
|
|
check_depends = True
|
|
|
|
|
|
|
|
for arg in sys.argv:
|
2014-05-20 17:22:49 -04:00
|
|
|
if arg.find("tests") == 0 and len(arg) > 5:
|
|
|
|
check_depends = False
|
2014-04-13 18:39:56 -04:00
|
|
|
break
|
2014-03-03 12:09:51 -05:00
|
|
|
|
2014-05-06 08:36:11 -04:00
|
|
|
def expand_files(extra_files):
|
|
|
|
res = []
|
|
|
|
for f in extra_files:
|
2014-05-14 17:48:43 -04:00
|
|
|
res += [ env.Object("%s-lib" % f, "../lib/%s" % f) ]
|
2014-05-06 08:36:11 -04:00
|
|
|
return res
|
|
|
|
|
|
|
|
def make_program(src, name, extra_files):
|
|
|
|
return env.Program("%s" % name, [ src ] + expand_files(extra_files))
|
|
|
|
|
|
|
|
def make_test(src, name):
|
2014-05-14 17:48:43 -04:00
|
|
|
cmd = "./tests/%s | tee ./tests/%s.out" % (name, name)
|
|
|
|
if env.Valgrind == True:
|
|
|
|
cmd = "valgrind -q --leak-check=full --error-exitcode=42 %s" % cmd
|
|
|
|
|
|
|
|
test = Command("%s.out" % name, [], "set -o pipefail; %s" % cmd)
|
2014-05-06 08:36:11 -04:00
|
|
|
Alias("tests/%s" % name, test)
|
|
|
|
AlwaysBuild(test)
|
|
|
|
return test
|
|
|
|
|
|
|
|
def prepare_test(name, src, extra_files):
|
|
|
|
exe = make_program(src, name, extra_files)
|
|
|
|
test = make_test(src, name)
|
|
|
|
Depends(test, exe)
|
|
|
|
return test
|
|
|
|
|
|
|
|
res = []
|
|
|
|
lib_files = []
|
|
|
|
|
|
|
|
ignore = open(".gitignore", 'w')
|
2014-05-14 17:48:43 -04:00
|
|
|
for src, lib, extra, pkgs in tests:
|
2014-05-06 08:36:11 -04:00
|
|
|
name = "%s" % src.rsplit(".")[0]
|
|
|
|
|
|
|
|
if lib == True:
|
2014-05-18 21:09:46 -04:00
|
|
|
lib_files += [ src ] + extra
|
|
|
|
extra = lib_files
|
2013-07-07 21:17:27 -04:00
|
|
|
|
2014-05-14 17:48:43 -04:00
|
|
|
for p in pkgs:
|
|
|
|
env.UsePackage(p)
|
|
|
|
|
2014-05-06 08:36:11 -04:00
|
|
|
test = prepare_test(name, src, extra)
|
|
|
|
if (check_depends == True) and (len(res) > 0):
|
|
|
|
Depends(test, res[len(res) - 1])
|
2014-03-02 12:00:41 -05:00
|
|
|
|
2014-05-06 08:36:11 -04:00
|
|
|
res += [ test ]
|
|
|
|
ignore.write(name + "\n")
|
|
|
|
ignore.close();
|
2014-03-02 12:00:41 -05:00
|
|
|
|
2014-05-20 17:22:49 -04:00
|
|
|
if env.Coverage == True:
|
|
|
|
cov = Command("ocarina.gcov", [], "gcov -r tests/*.gcda")
|
|
|
|
Depends(cov, res[len(res) - 1])
|
|
|
|
res += [ cov ]
|
|
|
|
|
|
|
|
if env.CppCheck == True:
|
|
|
|
check = Command("cpp.check", [], "cppcheck -q .")
|
|
|
|
Depends(check, res[len(res) - 1])
|
|
|
|
res += [ check ]
|
|
|
|
|
2014-05-06 08:36:11 -04:00
|
|
|
Return("res")
|
2014-03-02 14:44:24 -05:00
|
|
|
|
2014-05-18 21:09:46 -04:00
|
|
|
##scripts = [ "library", "deck", "audio", "gui" ]
|