diff --git a/Lib/test/test_imgfile.py b/Lib/test/test_imgfile.py
index aa9c414..b074320 100755
--- a/Lib/test/test_imgfile.py
+++ b/Lib/test/test_imgfile.py
@@ -4,7 +4,7 @@
    Roger E. Masse
 """
 
-from test_support import verbose, unlink
+from test_support import verbose, unlink, findfile
 
 import imgfile, uu, os
 
@@ -23,14 +23,6 @@
     unlink('test.rgb')
     unlink('greytest.rgb')
 
-def findfile(file):
-        if os.path.isabs(file): return file
-        import sys
-        for dn in sys.path:
-                fn = os.path.join(dn, file)
-                if os.path.exists(fn): return fn
-        return file
-
 def testimage(name):
     """Run through the imgfile's battery of possible methods
        on the image passed in name.
diff --git a/Lib/test/test_rgbimg.py b/Lib/test/test_rgbimg.py
index 0c449da..38bcdf5 100644
--- a/Lib/test/test_rgbimg.py
+++ b/Lib/test/test_rgbimg.py
@@ -2,25 +2,12 @@
 
 import rgbimg, os, uu
 
-from test_support import verbose, unlink
+from test_support import verbose, unlink, findfile
 
 error = 'test_rgbimg.error'
 
 print 'RGBimg test suite:'
 
-def findfile(file):
-        if os.path.isabs(file): return file
-        import sys
-        path = sys.path
-        try:
-            path = [os.path.dirname(__file__)] + path
-        except NameError:
-            pass
-        for dn in path:
-                fn = os.path.join(dn, file)
-                if os.path.exists(fn): return fn
-        return file
-
 def testimg(rgb_file, raw_file):
         rgb_file = findfile(rgb_file)
         raw_file = findfile(raw_file)
diff --git a/Lib/test/test_sunaudiodev.py b/Lib/test/test_sunaudiodev.py
index 1438c09..af18761 100644
--- a/Lib/test/test_sunaudiodev.py
+++ b/Lib/test/test_sunaudiodev.py
@@ -1,20 +1,7 @@
-from test_support import verbose, TestFailed
+from test_support import verbose, findfile, TestFailed
 import sunaudiodev
 import os
 
-def findfile(file):
-        if os.path.isabs(file): return file
-        import sys
-        path = sys.path
-        try:
-                path = [os.path.dirname(__file__)] + path
-        except NameError:
-                pass
-        for dn in path:
-                fn = os.path.join(dn, file)
-                if os.path.exists(fn): return fn
-        return file
-
 def play_sound_file(path):
     fp = open(path, 'r')
     data = fp.read()
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 7dc1940..478c845 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -41,3 +41,15 @@
 
 TESTFN = '@test' # Filename used for testing
 from os import unlink
+
+def findfile(file, here=__file__):
+	import os
+        if os.path.isabs(file):
+		return file
+        import sys
+        path = sys.path
+	path = [os.path.dirname(here)] + path
+        for dn in path:
+                fn = os.path.join(dn, file)
+                if os.path.exists(fn): return fn
+        return file
diff --git a/Lib/test/test_tokenize.py b/Lib/test/test_tokenize.py
index 34a7bfb..cd97e9a 100644
--- a/Lib/test/test_tokenize.py
+++ b/Lib/test/test_tokenize.py
@@ -1,18 +1,6 @@
-from test_support import verbose
+from test_support import verbose, findfile
 import tokenize, os, sys
 
-def findfile(file):
-	if os.path.isabs(file): return file
-	path = sys.path
-	try:
-	    path = [os.path.dirname(__file__)] + path
-	except NameError:
-	    pass
-	for dn in path:
-		fn = os.path.join(dn, file)
-		if os.path.exists(fn): return fn
-	return file
-
 if verbose:
     print 'starting...'
 file = open(findfile('tokenize_tests.py'))
