home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / test_popen.py < prev    next >
Text File  |  2003-12-30  |  1KB  |  40 lines

  1. #! /usr/bin/env python
  2. """Basic tests for os.popen()
  3.  
  4.   Particularly useful for platforms that fake popen.
  5. """
  6.  
  7. import os
  8. import sys
  9. from test.test_support import TestSkipped
  10. from os import popen
  11.  
  12. # Test that command-lines get down as we expect.
  13. # To do this we execute:
  14. #    python -c "import sys;print sys.argv" {rest_of_commandline}
  15. # This results in Python being spawned and printing the sys.argv list.
  16. # We can then eval() the result of this, and see what each argv was.
  17. python = sys.executable
  18. if ' ' in python:
  19.     python = '"' + python + '"'     # quote embedded space for cmdline
  20. def _do_test_commandline(cmdline, expected):
  21.     cmd = '%s -c "import sys;print sys.argv" %s' % (python, cmdline)
  22.     data = popen(cmd).read()
  23.     got = eval(data)[1:] # strip off argv[0]
  24.     if got != expected:
  25.         print "Error in popen commandline handling."
  26.         print " executed '%s', expected '%r', but got '%r'" \
  27.                                                     % (cmdline, expected, got)
  28.  
  29. def _test_commandline():
  30.     _do_test_commandline("foo bar", ["foo", "bar"])
  31.     _do_test_commandline('foo "spam and eggs" "silly walk"', ["foo", "spam and eggs", "silly walk"])
  32.     _do_test_commandline('foo "a \\"quoted\\" arg" bar', ["foo", 'a "quoted" arg', "bar"])
  33.     print "popen seemed to process the command-line correctly"
  34.  
  35. def main():
  36.     print "Test popen:"
  37.     _test_commandline()
  38.  
  39. main()
  40.