2 """Basic tests for os.popen()
4 Particularly useful for platforms that fake popen.
8 from test
import test_support
11 # Test that command-lines get down as we expect.
12 # To do this we execute:
13 # python -c "import sys;print sys.argv" {rest_of_commandline}
14 # This results in Python being spawned and printing the sys.argv list.
15 # We can then eval() the result of this, and see what each argv was.
16 python
= sys
.executable
18 python
= '"' + python
+ '"' # quote embedded space for cmdline
20 class PopenTest(unittest
.TestCase
):
21 def _do_test_commandline(self
, cmdline
, expected
):
22 cmd
= '%s -c "import sys;print sys.argv" %s' % (python
, cmdline
)
23 data
= os
.popen(cmd
).read()
24 got
= eval(data
)[1:] # strip off argv[0]
25 self
.assertEqual(got
, expected
)
28 self
.assertRaises(TypeError, os
.popen
)
29 self
._do
_test
_commandline
(
33 self
._do
_test
_commandline
(
34 'foo "spam and eggs" "silly walk"',
35 ["foo", "spam and eggs", "silly walk"]
37 self
._do
_test
_commandline
(
38 'foo "a \\"quoted\\" arg" bar',
39 ["foo", 'a "quoted" arg', "bar"]
41 test_support
.reap_children()
44 test_support
.run_unittest(PopenTest
)
46 if __name__
== "__main__":