diff --git a/Lib/test/support.py b/Lib/test/support.py
index 6096c18..34005e8 100644
--- a/Lib/test/support.py
+++ b/Lib/test/support.py
@@ -343,13 +343,13 @@
     # file system encoding, but *not* with the default (ascii) encoding
     TESTFN_UNICODE = "@test-\xe0\xf2"
     TESTFN_ENCODING = sys.getfilesystemencoding()
-    # TESTFN_UNICODE_UNENCODEABLE is a filename that should *not* be
+    # TESTFN_UNENCODABLE is a filename that should *not* be
     # able to be encoded by *either* the default or filesystem encoding.
     # This test really only makes sense on Windows NT platforms
     # which have special Unicode support in posixmodule.
     if (not hasattr(sys, "getwindowsversion") or
             sys.getwindowsversion()[3] < 2): #  0=win32s or 1=9x/ME
-        TESTFN_UNICODE_UNENCODEABLE = None
+        TESTFN_UNENCODABLE = None
     else:
         # Different kinds of characters from various languages to minimize the
         # probability that the whole name is encodable to MBCS (issue #9819)
@@ -360,13 +360,13 @@
             # errors=ignore' mode - hence we get '?' characters rather than
             # the exception.  'Latin1' operates as we expect - ie, fails.
             # See [ 850997 ] mbcs encoding ignores errors
-            TESTFN_UNICODE_UNENCODEABLE.encode("Latin1")
+            TESTFN_UNENCODABLE.encode("Latin1")
         except UnicodeEncodeError:
             pass
         else:
             print('WARNING: The filename %r CAN be encoded by the filesystem.  '
                   'Unicode filename tests may not be effective'
-                  % TESTFN_UNICODE_UNENCODEABLE)
+                  % TESTFN_UNENCODABLE)
 
 if os.path.isdir(TESTFN):
     # a test failed (eg. test_os) without removing TESTFN directory
diff --git a/Lib/test/test_unicode_file.py b/Lib/test/test_unicode_file.py
index 367715a..59ab85e 100644
--- a/Lib/test/test_unicode_file.py
+++ b/Lib/test/test_unicode_file.py
@@ -6,7 +6,7 @@
 
 import unittest
 from test.support import run_unittest, TESTFN_UNICODE, rmtree
-from test.support import TESTFN_ENCODING, TESTFN_UNICODE_UNENCODEABLE
+from test.support import TESTFN_ENCODING, TESTFN_UNENCODABLE
 try:
     TESTFN_UNICODE.encode(TESTFN_ENCODING)
 except (UnicodeError, TypeError):
@@ -146,8 +146,8 @@
     # _test functions with each of the filename combinations we wish to test
     def test_single_files(self):
         self._test_single(TESTFN_UNICODE)
-        if TESTFN_UNICODE_UNENCODEABLE is not None:
-            self._test_single(TESTFN_UNICODE_UNENCODEABLE)
+        if TESTFN_UNENCODABLE is not None:
+            self._test_single(TESTFN_UNENCODABLE)
 
     def test_directories(self):
         # For all 'equivalent' combinations:
@@ -156,9 +156,9 @@
         ext = ".dir"
         self._do_directory(TESTFN_UNICODE+ext, TESTFN_UNICODE+ext, False)
         # Our directory name that can't use a non-unicode name.
-        if TESTFN_UNICODE_UNENCODEABLE is not None:
-            self._do_directory(TESTFN_UNICODE_UNENCODEABLE+ext,
-                               TESTFN_UNICODE_UNENCODEABLE+ext,
+        if TESTFN_UNENCODABLE is not None:
+            self._do_directory(TESTFN_UNENCODABLE+ext,
+                               TESTFN_UNENCODABLE+ext,
                                False)
 
 def test_main():
