summaryrefslogtreecommitdiff
path: root/wscript
diff options
context:
space:
mode:
Diffstat (limited to 'wscript')
-rw-r--r--wscript75
1 files changed, 26 insertions, 49 deletions
diff --git a/wscript b/wscript
index c2311de0c..fa2e2ee37 100644
--- a/wscript
+++ b/wscript
@@ -90,9 +90,9 @@ def build(bld):
build_library(bld, 'shared')
# command '[build|clean]-tests'
- elif bld.variant == 'tests':
+ elif bld.variant == 'test':
build_library(bld, 'objects')
- build_tests(bld)
+ build_test(bld)
# command 'build|clean|install|uninstall': by default, run
# the same command for both the static and the shared lib
@@ -156,43 +156,20 @@ def call_ldconfig(bld):
if ldconf:
bld.exec_command(ldconf)
-def grep_test_header(text, test_file):
- return '\n'.join(l for l in test_file.read().splitlines() if text in l)
-
-def build_tests(bld):
- import os
-
- if bld.is_install:
- return
-
+def build_test(bld):
directory = bld.path
resources_path = directory.find_node('tests/resources/').abspath().replace('\\', '/')
- # Common object with the Test library methods
- bld.objects(source=['tests/test_helpers.c', 'tests/test_lib.c'], includes=['src', 'tests'], target='test_helper')
-
- # Build all tests in the tests/ folder
- for test_file in directory.ant_glob('tests/t????-*.c'):
- test_name, _ = os.path.splitext(os.path.basename(test_file.abspath()))
-
- # Preprocess table of contents for each test
- test_toc_file = directory.make_node('tests/%s.toc' % test_name)
- if bld.cmd == 'clean-tests': # cleanup; delete the generated TOC file
- test_toc_file.delete()
- elif bld.cmd == 'build-tests': # build; create TOC
- test_toc_file.write(grep_test_header('BEGIN_TEST', test_file))
-
- # Build individual test (don't run)
- bld.program(
- source=[test_file, 'tests/test_main.c'],
- target=test_name,
- includes=['src', 'tests'],
- defines=['TEST_TOC="%s.toc"' % test_name, 'TEST_RESOURCES="%s"' % resources_path],
- install_path=None,
- use=['test_helper', 'git2'] + ALL_LIBS # link with all the libs we know
- # libraries which are not enabled won't link
- )
+ sources = ['tests/test_lib.c', 'tests/test_helpers.c', 'tests/test_main.c']
+ sources = sources + directory.ant_glob('tests/t??-*.c')
+ bld.program(
+ source=sources,
+ target='libgit2_test',
+ includes=['src', 'tests'],
+ defines=['TEST_RESOURCES="%s"' % resources_path],
+ use=['git2'] + ALL_LIBS
+ )
class _test(BuildContext):
cmd = 'test'
@@ -200,7 +177,7 @@ class _test(BuildContext):
def test(bld):
from waflib import Options
- Options.commands = ['build-tests', 'run-tests'] + Options.commands
+ Options.commands = ['build-test', 'run-test'] + Options.commands
class _build_doc(Context):
cmd = 'doxygen'
@@ -216,24 +193,24 @@ def build_docs(ctx):
ctx.exec_command("git push origin gh-pages")
ctx.exec_command("git checkout master")
-class _run_tests(Context):
- cmd = 'run-tests'
- fun = 'run_tests'
+class _run_test(Context):
+ cmd = 'run-test'
+ fun = 'run_test'
-def run_tests(ctx):
+def run_test(ctx):
import shutil, tempfile, sys
failed = False
- test_folder = tempfile.mkdtemp()
- test_glob = 'build/tests/t????-*'
+ test_path = 'build/test/libgit2_test'
if sys.platform == 'win32':
- test_glob += '.exe'
+ test_path += '.exe'
+
+ test_folder = tempfile.mkdtemp()
+ test = ctx.path.find_node(test_path)
- for test in ctx.path.ant_glob(test_glob):
- if ctx.exec_command(test.abspath(), cwd=test_folder) != 0:
- failed = True
- break
+ if not test or ctx.exec_command(test.abspath(), cwd=test_folder) != 0:
+ failed = True
shutil.rmtree(test_folder)
@@ -256,11 +233,11 @@ def build_command(command):
build_command('build-static')
build_command('build-shared')
-build_command('build-tests')
+build_command('build-test')
build_command('clean-static')
build_command('clean-shared')
-build_command('clean-tests')
+build_command('clean-test')
build_command('install-static')
build_command('install-shared')