/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/transport/http/_urllib2_wrappers.py

  • Committer: v.ladeuil+lp at free
  • Date: 2006-12-12 12:49:55 UTC
  • mto: (2182.1.1 Aaron's integration)
  • mto: This revision was merged to the branch mainline in revision 2183.
  • Revision ID: v.ladeuil+lp@free.fr-20061212124955-1b8m2zk2tt54l869
Take John's comments into account and add more tests.

* bzrlib/transport/http/_urllib2_wrappers.py:
(ProxyHandler.get_proxy_env_var): Default to all_proxy if specific
env var is not found.

* bzrlib/tests/test_http.py:
Redesign the tests to be able to test for uppercased envrinoment
variables and all_proxy.
(TestProxyHttpServer.setUp): Initialize some attributes shared by
all tests.
(TestProxyHttpServer_pycurl.setUp): Specialized no_proxy for
pycurl and skip some tests.

* bzrlib/tests/__init__.py:
(TestCase._cleanEnvironment): Includes all proxy related
variables.

* bzrlib/tests/HttpServer.py:
(HttpServer._get_remote_url): No need to check for server thread
initialization here, we do that in setUp now.
(HttpServer.setUp): Explicitely waits for server thread
initialization or weird timing-related bugs occur in the test
suite.
(HttpServer.setUp, HttpServer.tearDown): Leave environment
handling to bzr.tests.TestCase._cleanEnvironment.

Show diffs side-by-side

added added

removed removed

Lines of Context:
638
638
            delattr(self, '%s_open' % type)
639
639
 
640
640
        # We are interested only by the http[s] proxies
641
 
        http_proxy = self.get_proxy('http')
642
 
        https_proxy = self.get_proxy('https')
 
641
        http_proxy = self.get_proxy_env_var('http')
 
642
        https_proxy = self.get_proxy_env_var('https')
643
643
 
644
644
        if http_proxy is not None:
645
645
            if self._debuglevel > 0:
653
653
            setattr(self, 'https_request',
654
654
                    lambda request: self.set_proxy(request, 'https'))
655
655
 
656
 
    def get_proxy(self, name, default=None):
657
 
        """Get a proxy env var. Returns default if not defined."""
 
656
    def get_proxy_env_var(self, name, default_to='all'):
 
657
        """Get a proxy env var.
 
658
 
 
659
        Note that we indirectly relies on
 
660
        urllib.getproxies_environment taking into account the
 
661
        uppercased values for proxy variables.
 
662
        """
658
663
        try:
659
664
            return self.proxies[name.lower()]
660
665
        except KeyError:
661
 
            return default
 
666
            if default_to is not None:
 
667
                # Try to get the alternate environment variable
 
668
                try:
 
669
                    return self.proxies[default_to]
 
670
                except KeyError:
 
671
                    pass
 
672
        return None
662
673
 
663
674
    def proxy_bypass(self, host):
664
675
        """Check if host should be proxied or not"""
665
 
        no_proxy = self.get_proxy('no')
 
676
        no_proxy = self.get_proxy_env_var('no', None)
666
677
        if no_proxy is None:
667
678
            return False
668
679
        hhost, hport = urllib.splitport(host)
687
698
        if self.proxy_bypass(request.get_host()):
688
699
            return request
689
700
 
690
 
        proxy = self.get_proxy(type)
 
701
        proxy = self.get_proxy_env_var(type)
691
702
        if self._debuglevel > 0:
692
703
            print 'set_proxy %s_request for %r' % (type, proxy)
693
704
        orig_type = request.get_type()