Revision: 3123
Author: jprantan
Date: Mon May  3 06:04:35 2010
Log: Started to fix the tests to work on Windows. Some cleanup is still required.
http://code.google.com/p/robotframework/source/detail?r=3123

Modified:
 /trunk/atest/robot/running/JavaStarter.py
 /trunk/atest/robot/running/ProcessManager.py
 /trunk/atest/robot/running/stopping_with_signal.txt

=======================================
--- /trunk/atest/robot/running/JavaStarter.py   Mon May  3 02:45:26 2010
+++ /trunk/atest/robot/running/JavaStarter.py   Mon May  3 06:04:35 2010
@@ -11,12 +11,14 @@
         jython_jar = os.path.join(self._jython_home, 'jython.jar')
self._classpath = jython_jar + os.pathsep + os.getenv('CLASSPATH','')
         java_home = os.getenv('JAVA_HOME')
- self._java = os.path.join(java_home, 'java') if java_home else 'java' + if java_home and java_home.startswith('"') and java_home.endswith('"'):
+            java_home = java_home[1:-1]
+ self._java = os.path.join(java_home, 'bin', 'java') if java_home else 'java'

     def get_jython_path(self):
         if not self._jython_home:
raise RuntimeError('This test requires JYTHON_HOME environment variable to be set.') - return '%s -Dpython.home=%s -classpath %s org.python.util.jython' % (self._java,self._jython_home,self._classpath) + return '%s -Dpython.home=%s -classpath %s org.python.util.jython' % (self._java, self._jython_home, self._classpath)


 # CP="/home/peke/Prog/jython2.2/jython.jar"
=======================================
--- /trunk/atest/robot/running/ProcessManager.py        Mon May  3 02:45:26 2010
+++ /trunk/atest/robot/running/ProcessManager.py        Mon May  3 06:04:35 2010
@@ -7,8 +7,12 @@
     def __init__(self):
         self._current_running_process = None

-    def start_process(self,*args):
- self._current_running_process = subprocess.Popen(args, shell=True, stderr=subprocess.PIPE,
+    def start_process(self, *args):
+        if ' ' in args[0]:
+            args = args[0].split() + list(args[1:])
+        print args
+        print ' '.join(args)
+ self._current_running_process = subprocess.Popen(args, shell=False, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
         self._output = ''
         self._err = ''
@@ -17,9 +21,17 @@
         self._current_running_process.poll()
         return self._current_running_process.returncode

-    def send_terminate(self, signal_):
+    def send_terminate(self, signal_name):
+        signal_to_send = getattr(signal, signal_name)
         pid = self._current_running_process.pid
-        os.kill(pid, getattr(signal, signal_))
+        if not os.name == 'nt':
+            os.kill(pid, signal_to_send)
+        else:
+            print "Process pid is:", pid
+            signal.signal(signal.SIGINT, signal.SIG_IGN)
+            import ctypes
+            kernel32 = ctypes.windll.kernel32
+            kernel32.GenerateConsoleCtrlEvent(0, 0)

     def get_stdout(self):
         self._output += self._current_running_process.stdout.read()
=======================================
--- /trunk/atest/robot/running/stopping_with_signal.txt Mon May 3 03:40:19 2010 +++ /trunk/atest/robot/running/stopping_with_signal.txt Mon May 3 06:04:35 2010
@@ -66,16 +66,16 @@
     [arguments]  ${datasource}  ${teardown sleep}
     Set Runners
${path to datasource} = Set Variables And Get Datasources ${datasource} - ProcessManager.start process ${ROBOT} --output ${OUTFILE} --report None --log None --variable TEARDOWNSLEEP:${teardown sleep} ${path to datasource}
+    ${path to runner} =  Join Path  ${ROBOTPATH}  runner.py
+ ProcessManager.start process ${INTERPRETER} ${path to runner} --output ${OUTFILE} --report None --log None --variable TEARDOWNSLEEP:${teardown sleep} ${path to datasource}

 Start Running Jybot
     [arguments]  ${datasource}  ${teardown sleep}
     ${jybot} =  Get Jython Path
     Set Runners
${path to datasource} = Set Variables And Get Datasources ${datasource}
-    ${robot_jybot} =  Join Path  ${ROBOTPATH}  runner.py
- log ${jybot} ${robot_jybot} --output ${OUTFILE} --report None --log None ${path to datasource} - ProcessManager.start process ${jybot} ${robot_jybot} --output ${OUTFILE} --report None --log None --variable TEARDOWNSLEEP:${teardown sleep} ${path to datasource}
+    ${path to runner} =  Join Path  ${ROBOTPATH}  runner.py
+ ProcessManager.start process ${jybot} ${path to runner} --output ${OUTFILE} --report None --log None --variable TEARDOWNSLEEP:${teardown sleep} ${path to datasource}

 Check Test Cases Have Failed Correctly
     Check Test Case  Test  FAIL  Execution terminated by signal

Reply via email to