diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index ffdea06..75f8230 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -534,6 +534,9 @@
 #         Whether a skip is expected here depends on whether a large test
 #         input file has been downloaded.  test_normalization.skip_expected
 #         controls that.
+#     test_socket_ssl
+#         Controlled by test_socket_ssl.skip_expected.  Requires the network
+#         resource, and a socket module with ssl support.
 
 _expectations = {
     'win32':
@@ -565,7 +568,6 @@
         test_pwd
         test_resource
         test_signal
-        test_socket_ssl
         test_socketserver
         test_sunaudiodev
         test_timing
@@ -583,7 +585,6 @@
         test_largefile
         test_nis
         test_ntpath
-        test_socket_ssl
         test_socketserver
         test_sunaudiodev
         test_unicode_file
@@ -618,7 +619,6 @@
         test_pty
         test_pwd
         test_signal
-        test_socket_ssl
         test_socketserver
         test_sunaudiodev
         test_sundry
@@ -736,7 +736,6 @@
         test_popen2
         test_pty
         test_pwd
-        test_socket_ssl
         test_socketserver
         test_strop
         test_sunaudiodev
@@ -769,7 +768,6 @@
         test_nis
         test_ntpath
         test_poll
-        test_socket_ssl
         test_socketserver
         test_sunaudiodev
         test_unicode_file
@@ -792,7 +790,6 @@
         test_linuxaudiodev
         test_mpz
         test_openpty
-        test_socket_ssl
         test_socketserver
         test_winreg
         test_winsound
@@ -820,7 +817,6 @@
         test_openpty
         test_pyexpat
         test_sax
-        test_socket_ssl
         test_socketserver
         test_sunaudiodev
         test_unicode_file
@@ -850,7 +846,6 @@
         test_poll
         test_popen2
         test_resource
-        test_socket_ssl
         test_socketserver
         test_sunaudiodev
         test_unicode_file
@@ -863,6 +858,7 @@
     def __init__(self):
         import os.path
         from test import test_normalization
+        from test import test_socket_ssl
 
         self.valid = False
         if sys.platform in _expectations:
@@ -875,6 +871,9 @@
             if test_normalization.skip_expected:
                 self.expected.add('test_normalization')
 
+            if test_socket_ssl.skip_expected:
+                self.expected.add('test_socket_ssl')
+
             self.valid = True
 
     def isvalid(self):
diff --git a/Lib/test/test_socket_ssl.py b/Lib/test/test_socket_ssl.py
index 9c0d8cc..eb00b9b 100644
--- a/Lib/test/test_socket_ssl.py
+++ b/Lib/test/test_socket_ssl.py
@@ -1,27 +1,32 @@
 # Test just the SSL support in the socket module, in a moderately bogus way.
 
 from test import test_support
-
-# Optionally test SSL support.  This currently requires the 'network' resource
-# as given on the regrtest command line.  If not available, nothing after this
-# line will be executed.
-test_support.requires('network')
-
 import socket
-if not hasattr(socket, "ssl"):
-    raise test_support.TestSkipped("socket module has no ssl support")
 
-import urllib
+# Optionally test SSL support.  This requires the 'network' resource as given
+# on the regrtest command line.
+skip_expected = not (test_support.is_resource_enabled('network') and
+                     hasattr(socket, "ssl"))
 
-socket.RAND_status()
-try:
-    socket.RAND_egd(1)
-except TypeError:
-    pass
-else:
-    print "didn't raise TypeError"
-socket.RAND_add("this is a random string", 75.0)
+def test_main():
+    test_support.requires('network')
+    if not hasattr(socket, "ssl"):
+        raise test_support.TestSkipped("socket module has no ssl support")
 
-f = urllib.urlopen('https://sf.net')
-buf = f.read()
-f.close()
+    import urllib
+
+    socket.RAND_status()
+    try:
+        socket.RAND_egd(1)
+    except TypeError:
+        pass
+    else:
+        print "didn't raise TypeError"
+    socket.RAND_add("this is a random string", 75.0)
+
+    f = urllib.urlopen('https://sf.net')
+    buf = f.read()
+    f.close()
+
+if __name__ == "__main__":
+    test_main()
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 075d83b..8169533 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -50,8 +50,11 @@
         except os.error:
             pass
 
+def is_resource_enabled(resource):
+    return use_resources is not None and resource in use_resources
+
 def requires(resource, msg=None):
-    if use_resources is not None and resource not in use_resources:
+    if not is_resource_enabled(resource):
         if msg is None:
             msg = "Use of the `%s' resource not enabled" % resource
         raise TestSkipped(msg)
