Import('env', 'bin')

e = env.Clone()

c = env.CCoverageTester()
c.add(directory='src', pattern='*.c', report=True)
c.add(directory='src/features', pattern='*.c', report=True)
c.add(directory='pyext', pattern='*.c', report=False)

# Custom builder to run unit tests:
def builder_unit_test(target, source, env):
    opts = ""
    if env.get('html_coverage', None):
        opts = '--html_coverage=%s ' % env['html_coverage']
    app = "%s %s %s %s-v > %s" % (source[1].abspath, e['PYTHON'],
                                  source[0], opts, e['DEVNULL'])
    if c.Execute(app) == 0:
        file(str(target[0]), 'w').write('PASSED\n')
    else:
        print "unit tests FAILED"
        return 1
e.Append(BUILDERS = {'Test': Builder(action=builder_unit_test)})

# Always run our unit test:
test = e.Test("test.passed", ["run-all-tests.py", bin])
e.Alias("test", test)
e.AlwaysBuild("test.passed")
Return('test')
