mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
	
	
		
			93 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			93 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								#!/usr/bin/env python
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import unittest
							 | 
						||
| 
								 | 
							
								from test import test_support
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import socket
							 | 
						||
| 
								 | 
							
								import urllib2
							 | 
						||
| 
								 | 
							
								import sys
							 | 
						||
| 
								 | 
							
								import os
							 | 
						||
| 
								 | 
							
								import mimetools
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class URLTimeoutTest(unittest.TestCase):
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    TIMEOUT = 10.0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def setUp(self):
							 | 
						||
| 
								 | 
							
								        socket.setdefaulttimeout(self.TIMEOUT)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def tearDown(self):
							 | 
						||
| 
								 | 
							
								        socket.setdefaulttimeout(None)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def testURLread(self):
							 | 
						||
| 
								 | 
							
								        f = urllib2.urlopen("http://www.python.org/")
							 | 
						||
| 
								 | 
							
								        x = f.read()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class urlopenNetworkTests(unittest.TestCase):
							 | 
						||
| 
								 | 
							
								    """Tests urllib2.urlopen using the network.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    These tests are not exhaustive.  Assuming that testing using files does a
							 | 
						||
| 
								 | 
							
								    good job overall of some of the basic interface features.  There are no
							 | 
						||
| 
								 | 
							
								    tests exercising the optional 'data' and 'proxies' arguments.  No tests
							 | 
						||
| 
								 | 
							
								    for transparent redirection have been written.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    setUp is not used for always constructing a connection to
							 | 
						||
| 
								 | 
							
								    http://www.python.org/ since there a few tests that don't use that address
							 | 
						||
| 
								 | 
							
								    and making a connection is expensive enough to warrant minimizing unneeded
							 | 
						||
| 
								 | 
							
								    connections.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_basic(self):
							 | 
						||
| 
								 | 
							
								        # Simple test expected to pass.
							 | 
						||
| 
								 | 
							
								        open_url = urllib2.urlopen("http://www.python.org/")
							 | 
						||
| 
								 | 
							
								        for attr in ("read", "close", "info", "geturl"):
							 | 
						||
| 
								 | 
							
								            self.assert_(hasattr(open_url, attr), "object returned from "
							 | 
						||
| 
								 | 
							
								                            "urlopen lacks the %s attribute" % attr)
							 | 
						||
| 
								 | 
							
								        try:
							 | 
						||
| 
								 | 
							
								            self.assert_(open_url.read(), "calling 'read' failed")
							 | 
						||
| 
								 | 
							
								        finally:
							 | 
						||
| 
								 | 
							
								            open_url.close()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_info(self):
							 | 
						||
| 
								 | 
							
								        # Test 'info'.
							 | 
						||
| 
								 | 
							
								        open_url = urllib2.urlopen("http://www.python.org/")
							 | 
						||
| 
								 | 
							
								        try:
							 | 
						||
| 
								 | 
							
								            info_obj = open_url.info()
							 | 
						||
| 
								 | 
							
								        finally:
							 | 
						||
| 
								 | 
							
								            open_url.close()
							 | 
						||
| 
								 | 
							
								            self.assert_(isinstance(info_obj, mimetools.Message),
							 | 
						||
| 
								 | 
							
								                         "object returned by 'info' is not an instance of "
							 | 
						||
| 
								 | 
							
								                         "mimetools.Message")
							 | 
						||
| 
								 | 
							
								            self.assertEqual(info_obj.getsubtype(), "html")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_geturl(self):
							 | 
						||
| 
								 | 
							
								        # Make sure same URL as opened is returned by geturl.
							 | 
						||
| 
								 | 
							
								        URL = "http://www.python.org/"
							 | 
						||
| 
								 | 
							
								        open_url = urllib2.urlopen(URL)
							 | 
						||
| 
								 | 
							
								        try:
							 | 
						||
| 
								 | 
							
								            gotten_url = open_url.geturl()
							 | 
						||
| 
								 | 
							
								        finally:
							 | 
						||
| 
								 | 
							
								            open_url.close()
							 | 
						||
| 
								 | 
							
								        self.assertEqual(gotten_url, URL)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def test_bad_address(self):
							 | 
						||
| 
								 | 
							
								        # Make sure proper exception is raised when connecting to a bogus
							 | 
						||
| 
								 | 
							
								        # address.
							 | 
						||
| 
								 | 
							
								        self.assertRaises(IOError,
							 | 
						||
| 
								 | 
							
								                          # SF patch 809915:  In Sep 2003, VeriSign started
							 | 
						||
| 
								 | 
							
								                          # highjacking invalid .com and .net addresses to
							 | 
						||
| 
								 | 
							
								                          # boost traffic to their own site.  This test
							 | 
						||
| 
								 | 
							
								                          # started failing then.  One hopes the .invalid
							 | 
						||
| 
								 | 
							
								                          # domain will be spared to serve its defined
							 | 
						||
| 
								 | 
							
								                          # purpose.
							 | 
						||
| 
								 | 
							
								                          # urllib2.urlopen, "http://www.sadflkjsasadf.com/")
							 | 
						||
| 
								 | 
							
								                          urllib2.urlopen, "http://www.python.invalid/")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def test_main():
							 | 
						||
| 
								 | 
							
								    test_support.requires("network")
							 | 
						||
| 
								 | 
							
								    test_support.run_unittest(URLTimeoutTest, urlopenNetworkTests)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__ == "__main__":
							 | 
						||
| 
								 | 
							
								    test_main()
							 |