aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xrun_tests.py18
-rw-r--r--test cases/common/109 testframework options/meson.build5
-rw-r--r--test cases/common/109 testframework options/meson_options.txt3
-rw-r--r--test cases/common/109 testframework options/test_args.txt4
4 files changed, 29 insertions, 1 deletions
diff --git a/run_tests.py b/run_tests.py
index 7e799cb..cbc4e3d 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -17,11 +17,13 @@
from glob import glob
import os, subprocess, shutil, sys, signal
from io import StringIO
+from ast import literal_eval
import sys
from mesonbuild import environment
from mesonbuild import mesonlib
from mesonbuild import mlog
from mesonbuild import mesonmain
+from mesonbuild.mesonlib import stringlistify
from mesonbuild.scripts import meson_test, meson_benchmark
import argparse
import xml.etree.ElementTree as ET
@@ -181,6 +183,19 @@ def run_test_inprocess(testdir):
os.chdir(old_cwd)
return (max(returncode_test, returncode_benchmark), mystdout.getvalue(), mystderr.getvalue())
+def parse_test_args(testdir):
+ args = []
+ try:
+ with open(os.path.join(testdir, 'test_args.txt'), 'r') as f:
+ content = f.read()
+ try:
+ args = literal_eval(content)
+ except Exception:
+ raise Exception('Malformed test_args file.')
+ args = stringlistify(args)
+ except FileNotFoundError:
+ pass
+ return args
def run_test(testdir, extra_args, should_succeed):
global compile_commands
@@ -190,9 +205,10 @@ def run_test(testdir, extra_args, should_succeed):
os.mkdir(test_build_dir)
os.mkdir(install_dir)
print('Running test: ' + testdir)
+ test_args = parse_test_args(testdir)
gen_start = time.time()
gen_command = [meson_command, '--prefix', '/usr', '--libdir', 'lib', testdir, test_build_dir]\
- + unity_flags + backend_flags + extra_args
+ + unity_flags + backend_flags + test_args + extra_args
(returncode, stdo, stde) = run_configure_inprocess(gen_command)
gen_time = time.time() - gen_start
if not should_succeed:
diff --git a/test cases/common/109 testframework options/meson.build b/test cases/common/109 testframework options/meson.build
new file mode 100644
index 0000000..2773730
--- /dev/null
+++ b/test cases/common/109 testframework options/meson.build
@@ -0,0 +1,5 @@
+project('options', 'c')
+
+assert(get_option('testoption') == 'A string with spaces', 'Incorrect value for testoption option.')
+assert(get_option('other_one') == true, 'Incorrect value for other_one option.')
+assert(get_option('combo_opt') == 'one', 'Incorrect value for combo_opt option.')
diff --git a/test cases/common/109 testframework options/meson_options.txt b/test cases/common/109 testframework options/meson_options.txt
new file mode 100644
index 0000000..653dd75
--- /dev/null
+++ b/test cases/common/109 testframework options/meson_options.txt
@@ -0,0 +1,3 @@
+option('testoption', type : 'string', value : 'optval', description : 'An option to do something')
+option('other_one', type : 'boolean', value : false)
+option('combo_opt', type : 'combo', choices : ['one', 'two', 'combo'], value : 'combo')
diff --git a/test cases/common/109 testframework options/test_args.txt b/test cases/common/109 testframework options/test_args.txt
new file mode 100644
index 0000000..a667e3a
--- /dev/null
+++ b/test cases/common/109 testframework options/test_args.txt
@@ -0,0 +1,4 @@
+# This file is not read by meson itself, but by the test framework.
+# It is not possible to pass arguments to meson from a file.
+['--werror', '-D', 'testoption=A string with spaces', '-D', 'other_one=true', \
+ '-D', 'combo_opt=one']