diff --git a/Lib/lib-tk/test/test_tkinter/__init__.py b/Lib/lib-tk/test/test_tkinter/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Lib/lib-tk/test/test_tkinter/__init__.py
diff --git a/Lib/lib-tk/test/test_tkinter/test_text.py b/Lib/lib-tk/test/test_tkinter/test_text.py
new file mode 100644
index 0000000..009b8de
--- /dev/null
+++ b/Lib/lib-tk/test/test_tkinter/test_text.py
@@ -0,0 +1,39 @@
+import unittest
+import Tkinter
+from test.test_support import requires, run_unittest
+from ttk import setup_master
+
+requires('gui')
+
+class TextTest(unittest.TestCase):
+
+    def setUp(self):
+        self.root = setup_master()
+        self.text = Tkinter.Text(self.root)
+
+    def tearDown(self):
+        self.text.destroy()
+
+
+    def test_search(self):
+        text = self.text
+
+        # pattern and index are obligatory arguments.
+        self.failUnlessRaises(Tkinter.TclError, text.search, None, '1.0')
+        self.failUnlessRaises(Tkinter.TclError, text.search, 'a', None)
+        self.failUnlessRaises(Tkinter.TclError, text.search, None, None)
+
+        # Invalid text index.
+        self.failUnlessRaises(Tkinter.TclError, text.search, '', 0)
+
+        # Check if we are getting the indices as strings -- you are likely
+        # to get Tcl_Obj under Tk 8.5 if Tkinter doesn't convert it.
+        text.insert('1.0', 'hi-test')
+        self.failUnlessEqual(text.search('-test', '1.0', 'end'), '1.2')
+        self.failUnlessEqual(text.search('test', '1.0', 'end'), '1.3')
+
+
+tests_gui = (TextTest, )
+
+if __name__ == "__main__":
+    run_unittest(*tests_gui)
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 5c91dc3..955e551 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -1047,6 +1047,7 @@
         test_socket_ssl
         test_socketserver
         test_tcl
+        test_tk
         test_ttk_guionly
         test_ttk_textonly
         test_timeout
@@ -1066,6 +1067,7 @@
         test_kqueue
         test_ossaudiodev
         test_tcl
+        test_tk
         test_ttk_guionly
         test_ttk_textonly
         test_zipimport
@@ -1084,6 +1086,7 @@
         test_ossaudiodev
         test_pep277
         test_tcl
+        test_tk
         test_ttk_guionly
         test_ttk_textonly
         test_multiprocessing
@@ -1102,6 +1105,7 @@
         test_ossaudiodev
         test_pep277
         test_tcl
+        test_tk
         test_ttk_guionly
         test_ttk_textonly
         test_multiprocessing
diff --git a/Lib/test/test_tk.py b/Lib/test/test_tk.py
new file mode 100644
index 0000000..5d79a3c
--- /dev/null
+++ b/Lib/test/test_tk.py
@@ -0,0 +1,25 @@
+import os
+import sys
+from _tkinter import TclError
+from test import test_support
+
+this_dir = os.path.dirname(os.path.abspath(__file__))
+lib_tk_test = os.path.abspath(os.path.join(this_dir, os.path.pardir,
+    'lib-tk', 'test'))
+if lib_tk_test not in sys.path:
+    sys.path.append(lib_tk_test)
+
+import runtktests
+
+def test_main(enable_gui=False):
+    if enable_gui:
+        if test_support.use_resources is None:
+            test_support.use_resources = ['gui']
+        elif 'gui' not in test_support.use_resources:
+            test_support.use_resources.append('gui')
+
+    test_support.run_unittest(
+            *runtktests.get_tests(text=False, packages=['test_tkinter']))
+
+if __name__ == '__main__':
+    test_main(enable_gui=True)
