Fix regression in test definitions

Caused by #2236. Also add a test for this.
pull/2288/head
Nirbheek Chauhan 7 years ago
parent 21e2315afd
commit aff981a6b0
  1. 3
      mesonbuild/interpreter.py
  2. 6
      test cases/common/48 test args/copyfile.py
  3. 16
      test cases/common/48 test args/meson.build
  4. 34
      test cases/common/48 test args/tester.c

@ -2335,6 +2335,7 @@ class Interpreter(InterpreterBase):
else:
if not isinstance(envlist, list):
envlist = [envlist]
# Convert from array to environment object
env = EnvironmentVariablesHolder()
for e in envlist:
if '=' not in e:
@ -2344,7 +2345,7 @@ class Interpreter(InterpreterBase):
val = val.strip()
if ' ' in k:
raise InterpreterException('Env var key must not have spaces in it.')
env.add_var(env.held_object.set, [k, val], kwargs)
env.set_method([k, val], {})
env = env.held_object
return env

@ -0,0 +1,6 @@
#!/usr/bin/env python3
import sys
import shutil
shutil.copyfile(sys.argv[1], sys.argv[2])

@ -18,4 +18,18 @@ env2.set('first', 'something-else')
test('command line arguments', e1, args : ['first', 'second'])
test('environment variables', e2, env : env)
test('environment variables 2', e3, env : env2)
test('file arg', find_program('tester.py'), args : files('testfile.txt'))
# https://github.com/mesonbuild/meson/issues/2211#issuecomment-327741571
env_array = ['MESONTESTING=picklerror']
testfile = files('testfile.txt')
testerpy = find_program('tester.py')
test('file arg', testerpy, args : testfile, env : env_array)
copy = find_program('copyfile.py')
tester = executable('tester', 'tester.c')
testfilect = custom_target('testfile',
input : testfile,
output : 'outfile.txt',
build_by_default : true,
command : [copy, '@INPUT@', '@OUTPUT@'])
test('custom target arg', tester, args : testfilect, env : env_array)

@ -0,0 +1,34 @@
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#ifndef _MSC_VER
#include <unistd.h>
#endif
int main(int argc, char **argv) {
char data[10];
int fd, size;
if (argc != 2) {
fprintf(stderr, "Incorrect number of arguments, got %i\n", argc);
return 1;
}
fd = open(argv[1], O_RDONLY);
if (fd < 0) {
fprintf(stderr, "First argument is wrong.\n");
return 1;
}
size = read(fd, data, 10);
if (size < 0) {
fprintf(stderr, "Failed to read: %s\n", strerror(errno));
return 1;
}
if (strcmp(data, "contents\n") != 0) {
fprintf(stderr, "Contents don't match, got %s\n", data);
return 1;
}
return 0;
}
Loading…
Cancel
Save