aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/backends.py9
-rw-r--r--test cases/common/97 test workdir/meson.build2
-rwxr-xr-xtest cases/common/97 test workdir/subdir/checker.py5
-rw-r--r--test cases/common/97 test workdir/subdir/meson.build4
4 files changed, 19 insertions, 1 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 39aa365..0637905 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -725,7 +725,7 @@ class Backend:
elif isinstance(a, str):
cmd_args.append(a)
elif isinstance(a, build.Target):
- cmd_args.append(self.get_target_filename(a))
+ cmd_args.append(self.construct_target_rel_path(a, t.workdir))
else:
raise MesonException('Bad object in test command.')
ts = TestSerialisation(t.get_name(), t.project_name, t.suite, cmd, is_cross,
@@ -737,6 +737,13 @@ class Backend:
def write_test_serialisation(self, tests, datafile):
pickle.dump(self.create_test_serialisation(tests), datafile)
+ def construct_target_rel_path(self, a, workdir):
+ if workdir is None:
+ return self.get_target_filename(a)
+ assert(os.path.isabs(workdir))
+ abs_path = self.get_target_filename_abs(a)
+ return os.path.relpath(abs_path, workdir)
+
def generate_depmf_install(self, d):
if self.build.dep_manifest_name is None:
return
diff --git a/test cases/common/97 test workdir/meson.build b/test cases/common/97 test workdir/meson.build
index 1323a17..a8290f7 100644
--- a/test cases/common/97 test workdir/meson.build
+++ b/test cases/common/97 test workdir/meson.build
@@ -4,3 +4,5 @@ exe = executable('opener', 'opener.c')
test('basic', exe, workdir : meson.source_root())
test('shouldfail', exe, should_fail : true)
+
+subdir('subdir')
diff --git a/test cases/common/97 test workdir/subdir/checker.py b/test cases/common/97 test workdir/subdir/checker.py
new file mode 100755
index 0000000..66e287d
--- /dev/null
+++ b/test cases/common/97 test workdir/subdir/checker.py
@@ -0,0 +1,5 @@
+#!/usr/bin/env python3
+
+import sys
+
+data = open(sys.argv[1], 'rb').read()
diff --git a/test cases/common/97 test workdir/subdir/meson.build b/test cases/common/97 test workdir/subdir/meson.build
new file mode 100644
index 0000000..687a1cf
--- /dev/null
+++ b/test cases/common/97 test workdir/subdir/meson.build
@@ -0,0 +1,4 @@
+exe2 = executable('dummy', '../opener.c')
+test('subdir', find_program('checker.py'),
+ workdir : meson.source_root(),
+ args: [exe2])