#!/usr/bin/python import sys Import("env") tests = [ ### # # (source.cpp, use collected lib_files?, [ other files ]) # ("version.cpp", False, []), ("file.cpp", True, []), ("database.cpp", True, []), ("index.cpp", True, []), ("filter.cpp", True, []), ("idle.cpp", False, [ "idle.cpp" ]), ("tags.cpp", True, []), ("queue.cpp", True, [ "callback.cpp" ]), ] check_depends = True for arg in sys.argv: if arg.find("tests") == 0: env.Append( CCFLAGS = [ "-DCONFIG_TEST" ] ) if len(arg) > 5: check_depends = False break def expand_files(extra_files): res = [] for f in extra_files: res += [ "../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): test = Command("%s.out" % name, [], "set -o pipefail; ./tests/%s | tee ./tests/%s.out" % (name, name)) 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 in tests: name = "%s" % src.rsplit(".")[0] if lib == True: lib_files += [ src ] extra = lib_files + extra 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(); Return("res") ##scripts = [ "playlist", "library", "deck", "audio", "gui" ]