[Python-checkins] r45682 - in python/trunk: Lib/test/test_cmd_line.py Misc/NEWS
nick.coghlan
python-checkins at python.org
Mon Apr 24 06:32:49 CEST 2006
Author: nick.coghlan
Date: Mon Apr 24 06:32:47 2006
New Revision: 45682
Modified:
python/trunk/Lib/test/test_cmd_line.py
python/trunk/Misc/NEWS
Log:
Add unit tests for the -m and -c command line switches
Modified: python/trunk/Lib/test/test_cmd_line.py
==============================================================================
--- python/trunk/Lib/test/test_cmd_line.py (original)
+++ python/trunk/Lib/test/test_cmd_line.py Mon Apr 24 06:32:47 2006
@@ -18,6 +18,11 @@
def exit_code(self, cmd_line):
return subprocess.call([sys.executable, cmd_line], stderr=subprocess.PIPE)
+ def popen_python(self, *args):
+ cmd_line = [sys.executable]
+ cmd_line.extend(args)
+ return subprocess.Popen(cmd_line, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+
def test_directories(self):
self.assertNotEqual(self.exit_code('.'), 0)
self.assertNotEqual(self.exit_code('< .'), 0)
@@ -50,6 +55,56 @@
version = 'Python %d.%d' % sys.version_info[:2]
self.assertTrue(self.start_python('-V').startswith(version))
+ def test_run_module(self):
+ # Test expected operation of the '-m' switch
+ # Switch needs an argument
+ result = self.popen_python('-m')
+ exit_code = result.wait()
+ self.assertNotEqual(exit_code, 0)
+ err_details = result.stderr.read()
+ self.assertTrue(err_details.startswith('Argument expected'))
+ # Check we get an import error for a nonexistent module
+ result = self.popen_python('-m', 'fnord43520xyz')
+ exit_code = result.wait()
+ self.assertNotEqual(exit_code, 0)
+ err_details = result.stderr.read()
+ self.assertTrue('ImportError' in err_details)
+ # Traceback shown if the requested module is located for execution
+ # and subsequently fails (even if that module is runpy)
+ result = self.popen_python('-m', 'runpy', 'fnord')
+ exit_code = result.wait()
+ self.assertNotEqual(exit_code, 0)
+ err_details = result.stderr.read()
+ self.assertTrue(err_details.startswith('Traceback'))
+ # Silence if module is located and run successfully
+ result = self.popen_python('-m', 'timeit', '-n', '1')
+ exit_code = result.wait()
+ self.assertEqual(exit_code, 0)
+ err_details = result.stderr.read()
+ self.assertTrue(err_details in ('', '\n'))
+
+ def test_run_code(self):
+ # Test expected operation of the '-c' switch
+ # Switch needs an argument
+ result = self.popen_python('-c')
+ exit_code = result.wait()
+ self.assertNotEqual(exit_code, 0)
+ err_details = result.stderr.read()
+ self.assertTrue(err_details.startswith('Argument expected'))
+ # Traceback shown for uncaught exceptions
+ result = self.popen_python('-c', 'raise Exception')
+ exit_code = result.wait()
+ self.assertNotEqual(exit_code, 0)
+ err_details = result.stderr.read()
+ self.assertTrue(err_details.startswith('Traceback'))
+ # Silence if execution is successful
+ result = self.popen_python('-c', '""')
+ exit_code = result.wait()
+ self.assertEqual(exit_code, 0)
+ err_details = result.stderr.read()
+ self.assertTrue(err_details in ('', '\n'))
+
+
def test_main():
test.test_support.run_unittest(CmdLineTest)
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Mon Apr 24 06:32:47 2006
@@ -158,6 +158,8 @@
Tests
-----
+- test_cmd_line now checks operation of the -m and -c command switches
+
- The test_contextlib test in 2.5a1 wasn't actually run unless you ran
it separately and by hand. It also wasn't cleaning up its changes to
the current Decimal context.
More information about the Python-checkins
mailing list