summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2021-03-12 19:53:29 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2021-03-13 11:43:04 +0200
commit98c29986a3c0f71e45d41369168f98fc2baf55b1 (patch)
tree0b085d78f800b5b70adb9a18e71b043e4129ff03
parent1f3bf0f1357a20d9975a2de54e0fd097fc52424f (diff)
downloadmeson-runsubdir.tar.gz
Fix run_targets running scripts from different subdirs.runsubdir
-rw-r--r--mesonbuild/interpreter.py2
-rwxr-xr-xrun_unittests.py9
-rw-r--r--test cases/common/52 run target/meson.build2
-rw-r--r--test cases/common/52 run target/subdir/textprinter.py3
4 files changed, 16 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index f169d591a..e563f36f0 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -4008,6 +4008,8 @@ This will become a hard error in the future.''' % kwargs['input'], location=self
if isinstance(i, dependencies.ExternalProgram) and not i.found():
raise InterpreterException(f'Tried to use non-existing executable {i.name!r}')
cleaned_args.append(i)
+ if isinstance(cleaned_args[0], str):
+ cleaned_args[0] = self.func_find_program(node, cleaned_args[0], {})
name = args[0]
if not isinstance(name, str):
raise InterpreterException('First argument must be a string.')
diff --git a/run_unittests.py b/run_unittests.py
index 759aa966e..7e7ec9329 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -2385,6 +2385,15 @@ class AllPlatformTests(BasePlatformTests):
self.run_target('check-env')
self.run_target('check-env-ct')
+ def test_run_target_subdir(self):
+ '''
+ Test that run_targets are run from the correct directory
+ https://github.com/mesonbuild/meson/issues/957
+ '''
+ testdir = os.path.join(self.common_test_dir, '52 run target')
+ self.init(testdir)
+ self.run_target('textprinter')
+
def test_install_introspection(self):
'''
Tests that the Meson introspection API exposes install filenames correctly
diff --git a/test cases/common/52 run target/meson.build b/test cases/common/52 run target/meson.build
index df0a1a50e..85d30f0b3 100644
--- a/test cases/common/52 run target/meson.build
+++ b/test cases/common/52 run target/meson.build
@@ -103,3 +103,5 @@ custom_target('check-env-ct',
'MY_ENV': '1'},
output: 'check-env-ct',
)
+
+run_target('textprinter', command: ['subdir/textprinter.py'])
diff --git a/test cases/common/52 run target/subdir/textprinter.py b/test cases/common/52 run target/subdir/textprinter.py
new file mode 100644
index 000000000..3159c08ed
--- /dev/null
+++ b/test cases/common/52 run target/subdir/textprinter.py
@@ -0,0 +1,3 @@
+#!/usr/bin/env python3
+
+print('I am a script. Being run.')