From 16bea3b93017ca50f2e364f99fb10d535c72b1e3 Mon Sep 17 00:00:00 2001 From: HelioGuilherme66 Date: Tue, 3 Sep 2019 02:09:42 +0100 Subject: [PATCH] Parses arguments in Windows. Fixes #1891 --- src/robotide/contrib/testrunner/runprofiles.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/robotide/contrib/testrunner/runprofiles.py b/src/robotide/contrib/testrunner/runprofiles.py index d422838f9..079c1706d 100644 --- a/src/robotide/contrib/testrunner/runprofiles.py +++ b/src/robotide/contrib/testrunner/runprofiles.py @@ -36,6 +36,7 @@ from robotide.robotapi import DataError, Information from robotide.utils import (overrides, SYSTEM_ENCODING, ArgumentParser, is_unicode, PY3) +from robotide.context import IS_WINDOWS from robotide.contrib.testrunner.usages import USAGE from sys import getfilesystemencoding @@ -150,8 +151,20 @@ def get_command_prefix(self): return [self.get_command()] + self._get_arguments() def _get_arguments(self): + if IS_WINDOWS: + self._parse_windows_command() return self.arguments.split() + def _parse_windows_command(self): + from subprocess import Popen, PIPE + try: + p = Popen(['echo', self.arguments], stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=True) + output, _ = p.communicate() + output = str(output).lstrip("b\'").strip() + self.arguments = output.replace('"', '').replace('\'', '') + except IOError: + pass + def get_command(self): # TODO Test on Windows from subprocess import call from tempfile import TemporaryFile @@ -301,7 +314,7 @@ def OnArgumentsChanged(self, evt): def _validate_arguments(self, args): # assert type(args) is unicode - print("DEBUG: runprofiles: args=%s is_unicode(args)=%s" % (args, is_unicode(args))) + # print("DEBUG: runprofiles: args=%s is_unicode(args)=%s" % (args, is_unicode(args))) invalid_message = self._get_invalid_message(args) self._arguments.SetBackgroundColour( 'red' if invalid_message else 'white') @@ -321,6 +334,8 @@ def MySetToolTip(self, obj, tip): def _get_invalid_message(self, args): invalid = None + if not args: + return None try: # print("DEBUG: runprofiles get inv msg: %s\n" % args) clean_args = args.split("`") # Shell commands