diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py
index 018bec6..63d02b7 100644
--- a/Lib/test/test_cmd_line.py
+++ b/Lib/test/test_cmd_line.py
@@ -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)
 
diff --git a/Misc/NEWS b/Misc/NEWS
index 5a89d9c..4d58aa1 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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.
