#!/usr/bin/python import sys, os Import("test_env") tests = [ ### # # (source.cpp, use collected lib_files?, [ other files ]) # ("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" ]), ("random.cpp", False, [ "random.cpp" ], []), ("queue.cpp", True, [ "callback.cpp", "random.cpp" ], []), ("playlist.cpp", True, [], []), ] env = test_env env.UsePackage("glib-2.0") if env.Coverage == True: env.Append( CCFLAGS = [ "--coverage" ] ) env.Append( LINKFLAGS = [ "-lgcov", "-coverage" ] ) check_depends = True for arg in sys.argv: if arg.find("tests") == 0 and len(arg) > 5: check_depends = False break def expand_files(extra_files): res = [] for f in extra_files: res += [ env.Object("%s-lib" % f, "../lib/%s" % f) ] return res def make_program(src, name, extra_files): return env.Program("%s" % name, [ src ] + expand_files(extra_files)) def make_test(src, name): 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) 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') for src, lib, extra, pkgs in tests: name = "%s" % src.rsplit(".")[0] if lib == True: lib_files += [ src ] + extra extra = lib_files for p in pkgs: env.UsePackage(p) test = prepare_test(name, src, extra) if (check_depends == True) and (len(res) > 0): Depends(test, res[len(res) - 1]) res += [ test ] ignore.write(name + "\n") ignore.close(); 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 ] Return("res") ##scripts = [ "library", "deck", "audio", "gui" ]