diff --git a/Lib/test/test_scriptpackages.py b/Lib/test/test_scriptpackages.py
new file mode 100644
index 0000000..d653290
--- /dev/null
+++ b/Lib/test/test_scriptpackages.py
@@ -0,0 +1,49 @@
+# Copyright (C) 2003 Python Software Foundation
+
+import unittest
+import os
+import sys
+import tempfile
+from test import test_support
+import aetools
+
+class TestScriptpackages(unittest.TestCase):
+    
+    def _test_scriptpackage(self, package, testobject=1):
+        # Check that we can import the package
+        mod = __import__(package)
+        # Test that we can get the main event class
+        klass = getattr(mod, package)
+        # Test that we can instantiate that class
+        talker = klass()
+        if testobject:
+            # Test that we can get an application object
+            obj = mod.application(0)
+        
+    def test__builtinSuites(self):
+        self._test_scriptpackage('_builtinSuites', testobject=0)
+        
+    def test_StdSuites(self):
+        self._test_scriptpackage('StdSuites')
+        
+    def test_Finder(self):
+        self._test_scriptpackage('Finder')
+        
+    def test_Terminal(self):
+        self._test_scriptpackage('Terminal')
+        
+    def test_Netscape(self):
+        self._test_scriptpackage('Netscape')
+        
+    def test_Explorer(self):
+        self._test_scriptpackage('Explorer')
+        
+    def test_CodeWarrior(self):
+        self._test_scriptpackage('CodeWarrior')      
+
+def test_main():
+    test_support.run_unittest(TestScriptpackages)
+
+
+if __name__ == '__main__':
+    test_main()
