You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
3.8 KiB
167 lines
3.8 KiB
autoship = find_program('autoship', required: false) |
|
run_test_suite = find_program('run_test_suite.py') |
|
wrapper = meson.get_cross_property('wrapper', '') |
|
|
|
unit_tests = [ |
|
'env', |
|
'free_null', |
|
'node', |
|
'read_chunk', |
|
'reader_writer', |
|
'string', |
|
'uri', |
|
] |
|
|
|
foreach unit : unit_tests |
|
test(unit, |
|
executable('test_@0@'.format(unit), |
|
'test_@0@.c'.format(unit), |
|
c_args: prog_args, |
|
dependencies: serd_dep), |
|
suite: 'unit') |
|
endforeach |
|
|
|
if autoship.found() |
|
test('autoship', autoship, args: ['test', serd_src_root], suite: 'data') |
|
endif |
|
|
|
if get_option('utils') |
|
|
|
if wrapper != '' |
|
script_args = ['--wrapper', wrapper, '--serdi', serdi.full_path()] |
|
else |
|
script_args = ['--serdi', serdi.full_path()] |
|
endif |
|
|
|
serd_ttl = files('../serd.ttl')[0] |
|
|
|
test('serd.ttl', serdi, args: [serd_ttl], suite: 'data') |
|
|
|
# Command line options |
|
|
|
good_args = [ |
|
['-v'], |
|
['-h'], |
|
['-s', '<urn:eg:s> a <urn:eg:T> .'], |
|
] |
|
|
|
foreach args : good_args |
|
test(args[0], serdi, args: args, suite: ['serdi', 'options']) |
|
endforeach |
|
|
|
bad_args = [ |
|
['-c'], |
|
['-i', 'unknown'], |
|
['-i'], |
|
['-o', 'unknown'], |
|
['-o'], |
|
['-p'], |
|
['-r'], |
|
['-z'], |
|
] |
|
|
|
foreach args : bad_args |
|
name = ' '.join(args) |
|
test(name, serdi, |
|
args: args, |
|
should_fail: true, |
|
suite: ['serdi', 'options']) |
|
endforeach |
|
|
|
test('none', serdi, should_fail: true, suite: ['serdi', 'options']) |
|
|
|
test('quiet', files('test_quiet.py'), |
|
args: script_args + files('bad/bad-base.ttl'), |
|
suite: ['serdi', 'options']) |
|
|
|
# Inputs |
|
|
|
test('stdin', files('test_stdin.py'), |
|
args: script_args, |
|
suite: ['serdi', 'input']) |
|
|
|
test('string', serdi, |
|
args: ['-s', '<foo> a <Bar> .'], |
|
should_fail: true, |
|
suite: ['serdi', 'input']) |
|
|
|
test('missing', serdi, |
|
args: ['-i', 'turtle'], |
|
should_fail: true, |
|
suite: ['serdi', 'input']) |
|
|
|
test('no_such_file', serdi, |
|
args: ['no_such_file'], |
|
should_fail: true, |
|
suite: ['serdi', 'input']) |
|
|
|
test('remote', serdi, |
|
args: ['ftp://example.org/unsupported.ttl'], |
|
should_fail: true, |
|
suite: ['serdi', 'input']) |
|
|
|
# IO errors |
|
|
|
test('read_dir', serdi, |
|
args: ['-e', 'file://@0@/'.format(meson.source_root())], |
|
should_fail: true, |
|
suite: 'io_errors') |
|
|
|
test('bulk_read_dir', serdi, |
|
args: ['file://@0@/'.format(meson.source_root())], |
|
should_fail: true, |
|
suite: 'io_errors') |
|
|
|
test('write_error', files('test_write_error.py'), |
|
args: script_args + [serd_ttl], |
|
suite: 'io_errors') |
|
|
|
# RDF test suites |
|
|
|
## Serd-specific test suites |
|
|
|
serd_suites = ['good', 'bad', 'lax'] |
|
serd_base = 'http://drobilla.net/sw/serd/test/' |
|
|
|
### Run all suites with no special arguments |
|
foreach name : serd_suites |
|
manifest = files(name / 'manifest.ttl') |
|
base_uri = serd_base + name + '/' |
|
test(name, run_test_suite, |
|
args: script_args + [manifest, base_uri], |
|
suite: ['rdf', 'serd'], |
|
timeout: 240) |
|
endforeach |
|
|
|
|
|
### Run the lax suite with lax parsing enabled as well |
|
manifest = files('lax/manifest.ttl') |
|
base_uri = serd_base + 'lax/' |
|
test('lax', run_test_suite, |
|
args: script_args + [manifest, base_uri, '--', '-l'], |
|
suite: ['rdf', 'serd'], |
|
timeout: 240) |
|
|
|
## Standard W3C test suites |
|
|
|
w3c_suites = ['Turtle', 'NTriples', 'NQuads', 'TriG'] |
|
w3c_base = 'http://www.w3.org/2013/' |
|
|
|
foreach syntax : w3c_suites |
|
|
|
manifest = files(syntax + 'Tests' / 'manifest.ttl') |
|
base_uri = w3c_base + syntax + 'Tests/' |
|
|
|
args = ['--syntax', syntax, manifest, base_uri] |
|
if syntax == 'TriG' |
|
args += ['--', '-a'] |
|
endif |
|
|
|
test(syntax, run_test_suite, |
|
args: script_args + args, |
|
suite: ['rdf', 'w3c'], |
|
timeout: 240) |
|
|
|
endforeach |
|
|
|
endif
|
|
|