Roumen Petrov added the comment:
Hi Ned,
> Ned Jackson Lovely added the comment:
[SNIP]
> In both cases, the currently running python executable, fetched via
> sys.executable and run using os.popen, is used to print the value, instead of
> the shell's echo. This moves things closer towards cross-platform niceness,
> and removes the dependency on /bin/sh.
>
> Unfortunately, I don't have a Windows machine readily available to test this
> on. Could apply your preferred patch, run it for me, and let me know if you
> have any problems?
$ uname -a
MINGW32_NT-5.1 QEMU 1.0.18(0.48/3/2) 2012-11-21 22:34 i686 Msys
---
Python 3.4.0a0 (default, Mar 20 2013, 00:32:43)
[GCC 4.7.2] on win32
---
$ cat ...test_os.py
....
# Bug 1110478
def test_update2(self):
minimal_environ_keys = ('COMSPEC', 'PATH',)
minimal_environ = {k:os.environ[k] for k in minimal_environ_keys
if k in os.environ}
os.environ.clear()
os.environ.update(HELLO="World")
minimal_environ['HELLO'] = "World"
os.environ.update(minimal_environ)
python_cmd = "{0} -c \"import os;print(os.environ['HELLO'])\""
with os.popen(python_cmd.format(sys.executable)) as popen:
value = popen.read().strip()
self.assertEqual(value, "World")
# Bug 1110478
def test_update3(self):
self.assertTrue('HELLO' not in os.environ)
os.environ.update(HELLO="World")
python_cmd = "{0} -c \"import os;print(os.environ['HELLO'])\""
with os.popen(python_cmd.format(sys.executable)) as popen:
value = popen.read().strip()
self.assertEqual(value, "World")
@unittest.skipUnless(os.path.exists('/bin/sh'), 'requires /bin/sh')
def test_os_popen_iter(self):
with os.popen(
"/bin/sh -c 'echo \"line1\nline2\nline3\"'") as popen:
it = iter(popen)
self.assertEqual(next(it), "line1\n")
self.assertEqual(next(it), "line2\n")
self.assertEqual(next(it), "line3\n")
self.assertRaises(StopIteration, next, it)
....
result:
....
test_update (test.test_os.EnvironTests) ... ok
test_update2 (test.test_os.EnvironTests) ... ok
test_update3 (test.test_os.EnvironTests) ... ok
test_values (test.test_os.EnvironTests) ... ok
....
So with both (take2&take3) updates tests pass. Should work with MSVC builds.
May be test_os_popen_iter could be updated .
> Regards,
>
> Ned
----------
nosy: +rpetrov
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue5051>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com