Added tests for urlretrieve.  Also made sure urlopen tests cleaned up properly after themselves.
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
index 7d557a1..bc87b34 100644
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -35,6 +35,7 @@
     def tearDown(self):
         """Shut down the open object"""
         self.returned_obj.close()
+        os.remove(test_support.TESTFN)
 
     def test_interface(self):
         # Make sure object returned by urlopen() has the specified methods
@@ -87,16 +88,54 @@
         for line in self.returned_obj.__iter__():
             self.assertEqual(line, self.text)
 
-class urlretrieve_Tests(unittest.TestCase):
+class urlretrieve_FileTests(unittest.TestCase):
     """Test urllib.urlretrieve() on local files"""
-    pass
 
-class _urlopener_Tests(unittest.TestCase):
-    """Make sure urlopen() and urlretrieve() use the class assigned to
-    _urlopener"""
-    #XXX: Maybe create a custom class here that takes in a list and modifies
-    #   it to signal that it was called?
-    pass
+    def setUp(self):
+        # Create a temporary file.
+        self.text = 'testing urllib.urlretrieve'
+        FILE = file(test_support.TESTFN, 'wb')
+        FILE.write(self.text)
+        FILE.close()
+
+    def tearDown(self):
+        # Delete the temporary file.
+        os.remove(test_support.TESTFN)
+
+    def test_basic(self):
+        # Make sure that a local file just gets its own location returned and
+        # a headers value is returned.
+        result = urllib.urlretrieve("file:%s" % test_support.TESTFN)
+        self.assertEqual(result[0], test_support.TESTFN)
+        self.assert_(isinstance(result[1], mimetools.Message),
+                     "did not get a mimetools.Message instance as second "
+                     "returned value")
+
+    def test_copy(self):
+        # Test that setting the filename argument works.
+        second_temp = "%s.2" % test_support.TESTFN
+        result = urllib.urlretrieve("file:%s" % test_support.TESTFN, second_temp)
+        self.assertEqual(second_temp, result[0])
+        self.assert_(os.path.exists(second_temp), "copy of the file was not "
+                                                  "made")
+        FILE = file(second_temp, 'rb')
+        try:
+            text = FILE.read()
+        finally:
+            FILE.close()
+        self.assertEqual(self.text, text)
+
+    def test_reporthook(self):
+        # Make sure that the reporthook works.
+        def hooktester(count, block_size, total_size, count_holder=[0]):
+            self.assert_(isinstance(count, int))
+            self.assert_(isinstance(block_size, int))
+            self.assert_(isinstance(total_size, int))
+            self.assertEqual(count, count_holder[0])
+            count_holder[0] = count_holder[0] + 1
+        second_temp = "%s.2" % test_support.TESTFN
+        urllib.urlretrieve(test_support.TESTFN, second_temp, hooktester)
+        os.remove(second_temp)
 
 class QuotingTests(unittest.TestCase):
     """Tests for urllib.quote() and urllib.quote_plus()
@@ -371,6 +410,7 @@
 def test_main():
     test_suite = unittest.TestSuite()
     test_suite.addTest(unittest.makeSuite(urlopen_FileTests))
+    test_suite.addTest(unittest.makeSuite(urlretrieve_FileTests))
     test_suite.addTest(unittest.makeSuite(QuotingTests))
     test_suite.addTest(unittest.makeSuite(UnquotingTests))
     test_suite.addTest(unittest.makeSuite(urlencode_Tests))