Windows command execution works.

pull/15/head
Jussi Pakkanen 12 years ago
parent e5443493bf
commit c0c2c35496
  1. 11
      interpreter.py
  2. 10
      test cases/common/38 run program/meson.build
  3. 2
      test cases/common/38 run program/scripts/hello.bat

@ -17,7 +17,7 @@ import nodes
import environment
import coredata
import dependencies
import os, sys, platform, copy, subprocess
import os, sys, platform, copy, subprocess, shutil
class InterpreterException(coredata.MesonException):
pass
@ -57,8 +57,13 @@ class RunProcess(InterpreterObject):
return subprocess.Popen(command_array, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except FileNotFoundError:
pass
# Was not a command, try to run as a script relative to current dir.
fullpath = os.path.join(curdir, command_array[0])
# Was not a command, is a program in path?
exe = shutil.which(cmd_name)
if exe is not None:
command_array = [exe] + command_array[1:]
return subprocess.Popen(command_array, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# No? Maybe it is a script in the source tree.
fullpath = os.path.join(curdir, cmd_name)
command_array = [fullpath] + command_array[1:]
try:
return subprocess.Popen(command_array, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

@ -1,6 +1,11 @@
project('run command', 'c')
if host.name() == 'windows'
c = run_command('cmd', '/c', 'echo', 'hello')
else
c = run_command('echo', 'hello')
endif
correct = 'hello'
if c.returncode() != 0
@ -19,8 +24,11 @@ endif
# Now the same with a script.
if host.name() == 'windows'
cs = run_command('scripts/hello.bat')
else
cs = run_command('scripts/hello.sh')
correct = 'hello'
endif
if cs.returncode() != 0
error('Executing script failed.')

Loading…
Cancel
Save