|
From: <otm...@us...> - 2011-02-02 10:37:05
|
Revision: 7192
http://jython.svn.sourceforge.net/jython/?rev=7192&view=rev
Author: otmarhumbel
Date: 2011-02-02 10:36:55 +0000 (Wed, 02 Feb 2011)
Log Message:
-----------
prevent internal variables from being reused in subrocess calls
fixes issue #1700
thanks agronholm for the analysis
Modified Paths:
--------------
trunk/jython/Lib/test/test_bat_jy.py
trunk/jython/NEWS
trunk/jython/src/shell/jython.bat
Modified: trunk/jython/Lib/test/test_bat_jy.py
===================================================================
--- trunk/jython/Lib/test/test_bat_jy.py 2011-01-25 23:46:27 UTC (rev 7191)
+++ trunk/jython/Lib/test/test_bat_jy.py 2011-02-02 10:36:55 UTC (rev 7192)
@@ -48,7 +48,7 @@
return self.process.getErrorStream()
class StarterProcess:
- def writeStarter(self, args, javaHome, jythonHome, jythonOpts):
+ def writeStarter(self, args, javaHome, jythonHome, jythonOpts, internals=False):
(starter, starterPath) = tempfile.mkstemp(suffix='.bat', prefix='starter', text=True)
starter.close()
outfilePath = starterPath[:-4] + '.out'
@@ -60,6 +60,9 @@
starter.write('set JYTHON_HOME=%s\n' % jythonHome)
if jythonOpts:
starter.write('set JYTHON_OPTS=%s\n' % jythonOpts)
+ if internals:
+ starter.write('set _JYTHON_OPTS=leaking_internals\n')
+ starter.write('set _JYTHON_HOME=c:/leaking/internals\n')
starter.write(self.buildCommand(args, outfilePath))
return (starterPath, outfilePath)
finally:
@@ -92,9 +95,9 @@
except IllegalThreadStateException:
return True
- def run(self, args, javaHome, jythonHome, jythonOpts):
+ def run(self, args, javaHome, jythonHome, jythonOpts, internals=False):
''' creates a start script, executes it and captures the output '''
- (starterPath, outfilePath) = self.writeStarter(args, javaHome, jythonHome, jythonOpts)
+ (starterPath, outfilePath) = self.writeStarter(args, javaHome, jythonHome, jythonOpts, internals)
try:
process = Runtime.getRuntime().exec(starterPath)
stdoutMonitor = StdoutMonitor(process)
@@ -130,7 +133,7 @@
home = ex[:-11] # \jython.bat
return home
- def assertOutput(self, flags=None, javaHome=None, jythonHome=None, jythonOpts=None):
+ def assertOutput(self, flags=None, javaHome=None, jythonHome=None, jythonOpts=None, internals=False):
args = [self.quote(sys.executable), '--print']
memory = None
stack = None
@@ -161,7 +164,7 @@
jythonArgs = jythonArgs.replace('%%', '%') # workaround two .bat files
args.append(flag)
process = StarterProcess()
- out = process.run(args, javaHome, jythonHome, jythonOpts)
+ out = process.run(args, javaHome, jythonHome, jythonOpts, internals)
self.assertNotEquals('', out)
homeIdx = out.find('-Dpython.home=')
java = 'java'
@@ -256,7 +259,11 @@
def test_multiple(self):
self.assertOutput(jythonOpts='some arbitrary options')
-
+
+class InternalsTest(BaseTest):
+ def test_no_leaks(self):
+ self.assertOutput(internals=True)
+
class JavaOptsTest(BaseTest):
def test_memory(self):
self.assertOutput(['-J-Xmx321m'])
@@ -387,6 +394,7 @@
JavaHomeTest,
JythonHomeTest,
JythonOptsTest,
+ InternalsTest,
JavaOptsTest,
ArgsTest,
DoubleDashTest,
Modified: trunk/jython/NEWS
===================================================================
--- trunk/jython/NEWS 2011-01-25 23:46:27 UTC (rev 7191)
+++ trunk/jython/NEWS 2011-02-02 10:36:55 UTC (rev 7192)
@@ -5,6 +5,7 @@
- [ 1667 ] thread.local subclasses with constructor params fail
- [ 1698 ] warnings module fails under JSR-223
- [ 1697 ] Wrong error message when http connection can not be established
+ - [ 1700 ] "virtualenv is not compatible" to 2.5.2rc3
Jython 2.5.2rc3
Bugs Fixed
Modified: trunk/jython/src/shell/jython.bat
===================================================================
--- trunk/jython/src/shell/jython.bat 2011-01-25 23:46:27 UTC (rev 7191)
+++ trunk/jython/src/shell/jython.bat 2011-02-02 10:36:55 UTC (rev 7192)
@@ -24,9 +24,12 @@
rem ----- Verify and set required environment variables -----------------------
+rem make sure to clear the internal variables, to prevent leaking into subprocess calls
set _JAVA_CMD=java
if defined JAVA_HOME set _JAVA_CMD="%JAVA_HOME:"=%\bin\java"
-if defined JYTHON_OPTS set _JYTHON_OPTS="%JYTHON_OPTS:"=%"
+set _JYTHON_OPTS=
+if defined JYTHON_OPTS set _JYTHON_OPTS="%JYTHON_OPTS:"=%"
+set _JYTHON_HOME=
if defined JYTHON_HOME set _JYTHON_HOME="%JYTHON_HOME:"=%"
if defined _JYTHON_HOME goto gotHome
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|