12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- project('tryrun', 'c', 'cpp')
- # Complex to exercise all code paths.
- if meson.is_cross_build()
- if meson.has_exe_wrapper()
- compilers = [meson.get_compiler('c', native : false), meson.get_compiler('cpp', native : false)]
- else
- compilers = [meson.get_compiler('c', native : true), meson.get_compiler('cpp', native : true)]
- endif
- else
- compilers = [meson.get_compiler('c'), meson.get_compiler('cpp')]
- endif
- ok_code = '''#include<stdio.h>
- int main(int argc, char **argv) {
- printf("%s\n", "stdout");
- fprintf(stderr, "%s\n", "stderr");
- return 0;
- }
- '''
- error_code = '''int main(int argc, char **argv) {
- return 1;
- }
- '''
- no_compile_code = '''int main(int argc, char **argv) {
- '''
- INPUTS = [
- ['String', ok_code, error_code, no_compile_code],
- ['File', files('ok.c'), files('error.c'), files('no_compile.c')],
- ]
- foreach cc : compilers
- foreach input : INPUTS
- type = input[0]
- ok = cc.run(input[1], name : type + ' should succeed')
- err = cc.run(input[2], name : type + ' should fail')
- noc = cc.run(input[3], name : type + ' does not compile')
- if noc.compiled()
- error(type + ' compilation fail test failed.')
- else
- message(type + ' fail detected properly.')
- endif
- if ok.compiled()
- message(type + ' compilation worked.')
- else
- error(type + ' compilation did not work.')
- endif
- if ok.returncode() == 0
- message(type + ' return code ok.')
- else
- error(type + ' return code fail')
- endif
- if err.returncode() == 1
- message(type + ' bad return code ok.')
- else
- error(type + ' bad return code fail.')
- endif
- if ok.stdout().strip() == 'stdout'
- message(type + ' stdout ok.')
- else
- message(type + ' bad stdout.')
- endif
- if ok.stderr().strip() == 'stderr'
- message(type + ' stderr ok.')
- else
- message(type + ' bad stderr.')
- endif
- endforeach
- endforeach
|