Correctly move email package tests to Lib/test.
diff --git a/Lib/email/test/__init__.py b/Lib/email/test/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/Lib/email/test/__init__.py
+++ /dev/null
diff --git a/Lib/test/test_email.py b/Lib/test/test_email.py
deleted file mode 100644
index 5eebba5..0000000
--- a/Lib/test/test_email.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (C) 2001-2007 Python Software Foundation
-# email package unit tests
-
-# The specific tests now live in Lib/email/test
-from email.test.test_email import suite
-from email.test.test_email_codecs import suite as codecs_suite
-from test import support
-
-def test_main():
-    support.run_unittest(suite())
-    support.run_unittest(codecs_suite())
-
-if __name__ == '__main__':
-    test_main()
diff --git a/Lib/test/test_email/__init__.py b/Lib/test/test_email/__init__.py
new file mode 100644
index 0000000..5aae093
--- /dev/null
+++ b/Lib/test/test_email/__init__.py
@@ -0,0 +1,13 @@
+import os
+import sys
+import unittest
+import test.support
+
+# used by regrtest and __main__.
+def test_main():
+    here = os.path.dirname(__file__)
+    # Unittest mucks with the path, so we have to save and restore
+    # it to keep regrtest happy.
+    savepath = sys.path[:]
+    test.support._run_suite(unittest.defaultTestLoader.discover(here))
+    sys.path[:] = savepath
diff --git a/Lib/email/test/data/PyBanner048.gif b/Lib/test/test_email/data/PyBanner048.gif
similarity index 100%
rename from Lib/email/test/data/PyBanner048.gif
rename to Lib/test/test_email/data/PyBanner048.gif
Binary files differ
diff --git a/Lib/email/test/data/audiotest.au b/Lib/test/test_email/data/audiotest.au
similarity index 100%
rename from Lib/email/test/data/audiotest.au
rename to Lib/test/test_email/data/audiotest.au
Binary files differ
diff --git a/Lib/email/test/data/msg_01.txt b/Lib/test/test_email/data/msg_01.txt
similarity index 100%
rename from Lib/email/test/data/msg_01.txt
rename to Lib/test/test_email/data/msg_01.txt
diff --git a/Lib/email/test/data/msg_02.txt b/Lib/test/test_email/data/msg_02.txt
similarity index 100%
rename from Lib/email/test/data/msg_02.txt
rename to Lib/test/test_email/data/msg_02.txt
diff --git a/Lib/email/test/data/msg_03.txt b/Lib/test/test_email/data/msg_03.txt
similarity index 100%
rename from Lib/email/test/data/msg_03.txt
rename to Lib/test/test_email/data/msg_03.txt
diff --git a/Lib/email/test/data/msg_04.txt b/Lib/test/test_email/data/msg_04.txt
similarity index 100%
rename from Lib/email/test/data/msg_04.txt
rename to Lib/test/test_email/data/msg_04.txt
diff --git a/Lib/email/test/data/msg_05.txt b/Lib/test/test_email/data/msg_05.txt
similarity index 100%
rename from Lib/email/test/data/msg_05.txt
rename to Lib/test/test_email/data/msg_05.txt
diff --git a/Lib/email/test/data/msg_06.txt b/Lib/test/test_email/data/msg_06.txt
similarity index 100%
rename from Lib/email/test/data/msg_06.txt
rename to Lib/test/test_email/data/msg_06.txt
diff --git a/Lib/email/test/data/msg_07.txt b/Lib/test/test_email/data/msg_07.txt
similarity index 100%
rename from Lib/email/test/data/msg_07.txt
rename to Lib/test/test_email/data/msg_07.txt
diff --git a/Lib/email/test/data/msg_08.txt b/Lib/test/test_email/data/msg_08.txt
similarity index 100%
rename from Lib/email/test/data/msg_08.txt
rename to Lib/test/test_email/data/msg_08.txt
diff --git a/Lib/email/test/data/msg_09.txt b/Lib/test/test_email/data/msg_09.txt
similarity index 100%
rename from Lib/email/test/data/msg_09.txt
rename to Lib/test/test_email/data/msg_09.txt
diff --git a/Lib/email/test/data/msg_10.txt b/Lib/test/test_email/data/msg_10.txt
similarity index 100%
rename from Lib/email/test/data/msg_10.txt
rename to Lib/test/test_email/data/msg_10.txt
diff --git a/Lib/email/test/data/msg_11.txt b/Lib/test/test_email/data/msg_11.txt
similarity index 100%
rename from Lib/email/test/data/msg_11.txt
rename to Lib/test/test_email/data/msg_11.txt
diff --git a/Lib/email/test/data/msg_12.txt b/Lib/test/test_email/data/msg_12.txt
similarity index 100%
rename from Lib/email/test/data/msg_12.txt
rename to Lib/test/test_email/data/msg_12.txt
diff --git a/Lib/email/test/data/msg_12a.txt b/Lib/test/test_email/data/msg_12a.txt
similarity index 100%
rename from Lib/email/test/data/msg_12a.txt
rename to Lib/test/test_email/data/msg_12a.txt
diff --git a/Lib/email/test/data/msg_13.txt b/Lib/test/test_email/data/msg_13.txt
similarity index 100%
rename from Lib/email/test/data/msg_13.txt
rename to Lib/test/test_email/data/msg_13.txt
diff --git a/Lib/email/test/data/msg_14.txt b/Lib/test/test_email/data/msg_14.txt
similarity index 100%
rename from Lib/email/test/data/msg_14.txt
rename to Lib/test/test_email/data/msg_14.txt
diff --git a/Lib/email/test/data/msg_15.txt b/Lib/test/test_email/data/msg_15.txt
similarity index 100%
rename from Lib/email/test/data/msg_15.txt
rename to Lib/test/test_email/data/msg_15.txt
diff --git a/Lib/email/test/data/msg_16.txt b/Lib/test/test_email/data/msg_16.txt
similarity index 100%
rename from Lib/email/test/data/msg_16.txt
rename to Lib/test/test_email/data/msg_16.txt
diff --git a/Lib/email/test/data/msg_17.txt b/Lib/test/test_email/data/msg_17.txt
similarity index 100%
rename from Lib/email/test/data/msg_17.txt
rename to Lib/test/test_email/data/msg_17.txt
diff --git a/Lib/email/test/data/msg_18.txt b/Lib/test/test_email/data/msg_18.txt
similarity index 100%
rename from Lib/email/test/data/msg_18.txt
rename to Lib/test/test_email/data/msg_18.txt
diff --git a/Lib/email/test/data/msg_19.txt b/Lib/test/test_email/data/msg_19.txt
similarity index 100%
rename from Lib/email/test/data/msg_19.txt
rename to Lib/test/test_email/data/msg_19.txt
diff --git a/Lib/email/test/data/msg_20.txt b/Lib/test/test_email/data/msg_20.txt
similarity index 100%
rename from Lib/email/test/data/msg_20.txt
rename to Lib/test/test_email/data/msg_20.txt
diff --git a/Lib/email/test/data/msg_21.txt b/Lib/test/test_email/data/msg_21.txt
similarity index 100%
rename from Lib/email/test/data/msg_21.txt
rename to Lib/test/test_email/data/msg_21.txt
diff --git a/Lib/email/test/data/msg_22.txt b/Lib/test/test_email/data/msg_22.txt
similarity index 100%
rename from Lib/email/test/data/msg_22.txt
rename to Lib/test/test_email/data/msg_22.txt
diff --git a/Lib/email/test/data/msg_23.txt b/Lib/test/test_email/data/msg_23.txt
similarity index 100%
rename from Lib/email/test/data/msg_23.txt
rename to Lib/test/test_email/data/msg_23.txt
diff --git a/Lib/email/test/data/msg_24.txt b/Lib/test/test_email/data/msg_24.txt
similarity index 100%
rename from Lib/email/test/data/msg_24.txt
rename to Lib/test/test_email/data/msg_24.txt
diff --git a/Lib/email/test/data/msg_25.txt b/Lib/test/test_email/data/msg_25.txt
similarity index 100%
rename from Lib/email/test/data/msg_25.txt
rename to Lib/test/test_email/data/msg_25.txt
diff --git a/Lib/email/test/data/msg_26.txt b/Lib/test/test_email/data/msg_26.txt
similarity index 100%
rename from Lib/email/test/data/msg_26.txt
rename to Lib/test/test_email/data/msg_26.txt
diff --git a/Lib/email/test/data/msg_27.txt b/Lib/test/test_email/data/msg_27.txt
similarity index 100%
rename from Lib/email/test/data/msg_27.txt
rename to Lib/test/test_email/data/msg_27.txt
diff --git a/Lib/email/test/data/msg_28.txt b/Lib/test/test_email/data/msg_28.txt
similarity index 100%
rename from Lib/email/test/data/msg_28.txt
rename to Lib/test/test_email/data/msg_28.txt
diff --git a/Lib/email/test/data/msg_29.txt b/Lib/test/test_email/data/msg_29.txt
similarity index 100%
rename from Lib/email/test/data/msg_29.txt
rename to Lib/test/test_email/data/msg_29.txt
diff --git a/Lib/email/test/data/msg_30.txt b/Lib/test/test_email/data/msg_30.txt
similarity index 100%
rename from Lib/email/test/data/msg_30.txt
rename to Lib/test/test_email/data/msg_30.txt
diff --git a/Lib/email/test/data/msg_31.txt b/Lib/test/test_email/data/msg_31.txt
similarity index 100%
rename from Lib/email/test/data/msg_31.txt
rename to Lib/test/test_email/data/msg_31.txt
diff --git a/Lib/email/test/data/msg_32.txt b/Lib/test/test_email/data/msg_32.txt
similarity index 100%
rename from Lib/email/test/data/msg_32.txt
rename to Lib/test/test_email/data/msg_32.txt
diff --git a/Lib/email/test/data/msg_33.txt b/Lib/test/test_email/data/msg_33.txt
similarity index 100%
rename from Lib/email/test/data/msg_33.txt
rename to Lib/test/test_email/data/msg_33.txt
diff --git a/Lib/email/test/data/msg_34.txt b/Lib/test/test_email/data/msg_34.txt
similarity index 100%
rename from Lib/email/test/data/msg_34.txt
rename to Lib/test/test_email/data/msg_34.txt
diff --git a/Lib/email/test/data/msg_35.txt b/Lib/test/test_email/data/msg_35.txt
similarity index 100%
rename from Lib/email/test/data/msg_35.txt
rename to Lib/test/test_email/data/msg_35.txt
diff --git a/Lib/email/test/data/msg_36.txt b/Lib/test/test_email/data/msg_36.txt
similarity index 100%
rename from Lib/email/test/data/msg_36.txt
rename to Lib/test/test_email/data/msg_36.txt
diff --git a/Lib/email/test/data/msg_37.txt b/Lib/test/test_email/data/msg_37.txt
similarity index 100%
rename from Lib/email/test/data/msg_37.txt
rename to Lib/test/test_email/data/msg_37.txt
diff --git a/Lib/email/test/data/msg_38.txt b/Lib/test/test_email/data/msg_38.txt
similarity index 100%
rename from Lib/email/test/data/msg_38.txt
rename to Lib/test/test_email/data/msg_38.txt
diff --git a/Lib/email/test/data/msg_39.txt b/Lib/test/test_email/data/msg_39.txt
similarity index 100%
rename from Lib/email/test/data/msg_39.txt
rename to Lib/test/test_email/data/msg_39.txt
diff --git a/Lib/email/test/data/msg_40.txt b/Lib/test/test_email/data/msg_40.txt
similarity index 100%
rename from Lib/email/test/data/msg_40.txt
rename to Lib/test/test_email/data/msg_40.txt
diff --git a/Lib/email/test/data/msg_41.txt b/Lib/test/test_email/data/msg_41.txt
similarity index 100%
rename from Lib/email/test/data/msg_41.txt
rename to Lib/test/test_email/data/msg_41.txt
diff --git a/Lib/email/test/data/msg_42.txt b/Lib/test/test_email/data/msg_42.txt
similarity index 100%
rename from Lib/email/test/data/msg_42.txt
rename to Lib/test/test_email/data/msg_42.txt
diff --git a/Lib/email/test/data/msg_43.txt b/Lib/test/test_email/data/msg_43.txt
similarity index 100%
rename from Lib/email/test/data/msg_43.txt
rename to Lib/test/test_email/data/msg_43.txt
diff --git a/Lib/email/test/data/msg_44.txt b/Lib/test/test_email/data/msg_44.txt
similarity index 100%
rename from Lib/email/test/data/msg_44.txt
rename to Lib/test/test_email/data/msg_44.txt
diff --git a/Lib/email/test/data/msg_45.txt b/Lib/test/test_email/data/msg_45.txt
similarity index 100%
rename from Lib/email/test/data/msg_45.txt
rename to Lib/test/test_email/data/msg_45.txt
diff --git a/Lib/email/test/data/msg_46.txt b/Lib/test/test_email/data/msg_46.txt
similarity index 100%
rename from Lib/email/test/data/msg_46.txt
rename to Lib/test/test_email/data/msg_46.txt
diff --git a/Lib/email/test/test_email_codecs.py b/Lib/test/test_email/test_asian_codecs.py
similarity index 91%
rename from Lib/email/test/test_email_codecs.py
rename to Lib/test/test_email/test_asian_codecs.py
index ca85f57..a4dd9a9 100644
--- a/Lib/email/test/test_email_codecs.py
+++ b/Lib/test/test_email/test_asian_codecs.py
@@ -5,7 +5,7 @@
 import unittest
 from test.support import run_unittest
 
-from email.test.test_email import TestEmailBase
+from test.test_email.test_email import TestEmailBase
 from email.charset import Charset
 from email.header import Header, decode_header
 from email.message import Message
@@ -78,16 +78,5 @@
 
 
 
-def suite():
-    suite = unittest.TestSuite()
-    suite.addTest(unittest.makeSuite(TestEmailAsianCodecs))
-    return suite
-
-
-def test_main():
-    run_unittest(TestEmailAsianCodecs)
-
-
-
 if __name__ == '__main__':
-    unittest.main(defaultTest='suite')
+    unittest.main()
diff --git a/Lib/email/test/test_email.py b/Lib/test/test_email/test_email.py
similarity index 99%
rename from Lib/email/test/test_email.py
rename to Lib/test/test_email/test_email.py
index d14e223..29dd0fc 100644
--- a/Lib/email/test/test_email.py
+++ b/Lib/test/test_email/test_email.py
@@ -37,7 +37,7 @@
 from email import quoprimime
 
 from test.support import findfile, run_unittest, unlink
-from email.test import __file__ as landmark
+from test.test_email import __file__ as landmark
 
 
 NL = '\n'
@@ -4142,23 +4142,5 @@
 
 
 
-def _testclasses():
-    mod = sys.modules[__name__]
-    return [getattr(mod, name) for name in dir(mod) if name.startswith('Test')]
-
-
-def suite():
-    suite = unittest.TestSuite()
-    for testclass in _testclasses():
-        suite.addTest(unittest.makeSuite(testclass))
-    return suite
-
-
-def test_main():
-    for testclass in _testclasses():
-        run_unittest(testclass)
-
-
-
 if __name__ == '__main__':
-    unittest.main(defaultTest='suite')
+    unittest.main()
diff --git a/Lib/email/test/test_email_torture.py b/Lib/test/test_email/tourture_test.py
similarity index 100%
rename from Lib/email/test/test_email_torture.py
rename to Lib/test/test_email/tourture_test.py
diff --git a/Misc/NEWS b/Misc/NEWS
index 992ef8f..76b42b8 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -278,6 +278,11 @@
 Tests
 -----
 
+- The email test suite now lives in the Lib/test/test_email package.  The test
+  harness code has also been modernized to allow use of new unittest features.
+
+- regrtest now discovers test packages as well as test modules.
+
 - Issue #11577: improve test coverage of binhex.py. Patch by Arkady Koplyarov.
 
 - New test_crashers added to exercise the scripts in the Lib/test/crashers