aboutsummaryrefslogtreecommitdiffstats
path: root/wscript
diff options
context:
space:
mode:
Diffstat (limited to 'wscript')
-rw-r--r--wscript44
1 files changed, 37 insertions, 7 deletions
diff --git a/wscript b/wscript
index cc2b0ed5..72d9c5e5 100644
--- a/wscript
+++ b/wscript
@@ -33,6 +33,9 @@ def options(ctx):
'largefile': 'build with large file support on 32-bit systems',
'no-posix': 'do not use POSIX functions, even if present'})
+ opt.add_option('--dump', type='string', default='', dest='dump',
+ help='dump debugging output (iter, search, write, all)')
+
def configure(conf):
autowaf.display_header('Serd Configuration')
conf.load('compiler_c', cache=True)
@@ -64,6 +67,14 @@ def configure(conf):
defines = ['_POSIX_C_SOURCE=200809L'],
mandatory = False)
+ dump = Options.options.dump.split(',')
+ if 'all' in dump or 'iter' in dump:
+ conf.define('SERD_DEBUG_ITER', 1)
+ if 'all' in dump or 'search' in dump:
+ conf.define('SERD_DEBUG_SEARCH', 1)
+ if 'all' in dump or 'write' in dump:
+ conf.define('SERD_DEBUG_WRITE', 1)
+
autowaf.set_lib_env(conf, 'serd', SERD_VERSION)
conf.write_config_header('serd_config.h', remove=False)
@@ -79,9 +90,13 @@ lib_source = ['src/base64.c',
'src/byte_source.c',
'src/cursor.c',
'src/env.c',
+ 'src/inserter.c',
+ 'src/iter.c',
+ 'src/model.c',
'src/n3.c',
'src/node.c',
'src/nodes.c',
+ 'src/range.c',
'src/reader.c',
'src/sink.c',
'src/statement.c',
@@ -91,6 +106,7 @@ lib_source = ['src/base64.c',
'src/uri.c',
'src/world.c',
'src/writer.c',
+ 'src/zix/btree.c',
'src/zix/digest.c',
'src/zix/hash.c']
@@ -153,7 +169,8 @@ def build(bld):
('serd_test', 'tests/serd_test.c'),
('read_chunk_test', 'tests/read_chunk_test.c'),
('nodes_test', 'tests/nodes_test.c'),
- ('overflow_test', 'tests/overflow_test.c')]:
+ ('overflow_test', 'tests/overflow_test.c'),
+ ('model_test', 'tests/model_test.c')]:
bld(features = 'c cprogram',
source = prog[1],
use = 'libserd_profiled',
@@ -294,9 +311,17 @@ def show_diff(from_lines, to_lines, from_filename, to_filename):
tofile=os.path.abspath(to_filename)):
sys.stderr.write(line)
-def check_output(out_filename, check_filename, subst_from='', subst_to=''):
+def check_output(out_filename, check_filename, subst_from='', subst_to='', sort=False):
if not os.access(out_filename, os.F_OK):
Logs.pprint('RED', 'FAIL: output %s is missing' % out_filename)
+ elif sort:
+ out_lines = sorted(set(io.open(out_filename, encoding='utf-8').readlines()))
+ check_lines = sorted(set(io.open(check_filename, encoding='utf-8').readlines()))
+ if out_lines != check_lines:
+ show_diff(check_lines, out_lines, check_filename, out_filename)
+ return False
+ else:
+ return True
elif not file_equals(check_filename, out_filename, subst_from, subst_to):
Logs.pprint('RED', 'FAIL: %s != %s' % (os.path.abspath(out_filename),
check_filename))
@@ -414,14 +439,17 @@ def test_suite(ctx, base_uri, testdir, report, isyntax, osyntax, options=''):
# Check output against test suite
check_uri = model[test][mf + 'result'][0]
check_path = file_uri_to_path(check_uri)
+ sort = '-m' in options
result = autowaf.run_test(
ctx, APPNAME,
- lambda: check_output(action + '.out', check_path),
+ lambda: check_output(action + '.out', check_path, sort=sort),
True, name=str(action) + ' check', quiet=True)
# Run round-trip tests
- test_thru(ctx, uri, action, check_path,
- ' '.join(next(thru_options_iter)), isyntax, osyntax, options, quiet=True)
+ if not sort:
+ test_thru(ctx, uri, action, check_path,
+ ' '.join(next(thru_options_iter)),
+ isyntax, osyntax, options, quiet=True)
# Write test report entry
if report is not None:
@@ -491,7 +519,8 @@ def test(ctx):
['serd_test',
'read_chunk_test',
'nodes_test',
- 'overflow_test'],
+ 'overflow_test',
+ 'model_test'],
name='Unit')
def test_syntax_io(in_name, expected_name, lang):
@@ -555,7 +584,8 @@ def test(ctx):
'serdi_static "file://%s/tests/good/manifest.ttl" > /dev/full' % srcdir,
1, name='write_error')
- run_test_suites(ctx, '')
+ for opts in ['', '-m']:
+ run_test_suites(ctx, opts)
autowaf.post_test(ctx, APPNAME)