diff options
Diffstat (limited to 'Lib/test/test_popen.py')
| -rw-r--r-- | Lib/test/test_popen.py | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/Lib/test/test_popen.py b/Lib/test/test_popen.py index 92b5e92..accf187 100644 --- a/Lib/test/test_popen.py +++ b/Lib/test/test_popen.py @@ -1,24 +1,29 @@ -#! /usr/bin/env python +#! /usr/bin/env python3 """Basic tests for os.popen() Particularly useful for platforms that fake popen. """ import unittest -from test import test_support +from test import support import os, sys # Test that command-lines get down as we expect. # To do this we execute: -# python -c "import sys;print sys.argv" {rest_of_commandline} +# python -c "import sys;print(sys.argv)" {rest_of_commandline} # This results in Python being spawned and printing the sys.argv list. # We can then eval() the result of this, and see what each argv was. python = sys.executable +if ' ' in python: + python = '"' + python + '"' # quote embedded space for cmdline class PopenTest(unittest.TestCase): + def _do_test_commandline(self, cmdline, expected): - cmd = '%s -c "import sys;print sys.argv" %s' % (python, cmdline) - data = os.popen(cmd).read() + '\n' + cmd = '%s -c "import sys; print(sys.argv)" %s' + cmd = cmd % (python, cmdline) + with os.popen(cmd) as p: + data = p.read() got = eval(data)[1:] # strip off argv[0] self.assertEqual(got, expected) @@ -36,7 +41,7 @@ class PopenTest(unittest.TestCase): 'foo "a \\"quoted\\" arg" bar', ["foo", 'a "quoted" arg', "bar"] ) - test_support.reap_children() + support.reap_children() def test_return_code(self): self.assertEqual(os.popen("exit 0").close(), None) @@ -45,8 +50,16 @@ class PopenTest(unittest.TestCase): else: self.assertEqual(os.popen("exit 42").close(), 42 << 8) + def test_contextmanager(self): + with os.popen("echo hello") as f: + self.assertEqual(f.read(), "hello\n") + + def test_iterating(self): + with os.popen("echo hello") as f: + self.assertEqual(list(f), ["hello\n"]) + def test_main(): - test_support.run_unittest(PopenTest) + support.run_unittest(PopenTest) if __name__ == "__main__": test_main() |
