diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index ec1e186..8759941 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -9,6 +9,7 @@
 import time
 import re
 import sysconfig
+import warnings
 try:
     import gc
 except ImportError:
@@ -57,6 +58,34 @@
         self.assertEqual(actual, expected, msg)
 
 
+class DeprecationWarningTests(BaseTestCase):
+    def setUp(self):
+        BaseTestCase.setUp(self)
+        self._saved_warn = warnings.warn
+        self._warn_calls = []
+        warnings.warn = self._record_warn
+
+    def tearDown(self):
+        warnings.warn = self._saved_warn
+        BaseTestCase.tearDown(self)
+
+    def _record_warn(self, *args):
+        """A warnings.warn function that records calls."""
+        self._warn_calls.append(args)
+        self._saved_warn(*args)
+
+    def testCloseFdsWarning(self):
+        quick_process = [sys.executable, "-c", "import sys; sys.exit(0)"]
+        subprocess.call(quick_process, close_fds=True)
+        self.assertEqual([], self._warn_calls)
+        subprocess.call(quick_process, close_fds=False)
+        self.assertEqual([], self._warn_calls)
+        self.assertWarns(DeprecationWarning, subprocess.call, quick_process)
+        self.assertEqual(1, len(self._warn_calls))
+        self.assertIn('close_fds parameter was not specified',
+                      self._warn_calls[0][0])
+
+
 class ProcessTestCase(BaseTestCase):
 
     def test_call_seq(self):
@@ -1233,7 +1262,8 @@
                   ProcessTestCaseNoPoll,
                   HelperFunctionTests,
                   CommandsWithSpaces,
-                  ContextManagerTests)
+                  ContextManagerTests,
+                  DeprecationWarningTests)
 
     support.run_unittest(*unit_tests)
     support.reap_children()
