Rev 5580: Rework the http tests with overrideEnv. in file:///home/vila/src/bzr/bugs/690563-better-env-isolation/

Vincent Ladeuil v.ladeuil+lp at free.fr
Thu Dec 16 15:00:42 GMT 2010


At file:///home/vila/src/bzr/bugs/690563-better-env-isolation/

------------------------------------------------------------
revno: 5580
revision-id: v.ladeuil+lp at free.fr-20101216150042-88zr3m0zfjbuxzx7
parent: v.ladeuil+lp at free.fr-20101216131542-607h4j3ww6i1vasu
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 690563-better-env-isolation
timestamp: Thu 2010-12-16 16:00:42 +0100
message:
  Rework the http tests with overrideEnv.
-------------- next part --------------
=== modified file 'bzrlib/tests/test_http.py'
--- a/bzrlib/tests/test_http.py	2010-12-16 11:31:14 +0000
+++ b/bzrlib/tests/test_http.py	2010-12-16 15:00:42 +0000
@@ -1073,19 +1073,6 @@
     Only the urllib implementation is tested here.
     """
 
-    def setUp(self):
-        tests.TestCase.setUp(self)
-        self._old_env = {}
-        self.addCleanup(self._restore_env)
-
-    def _install_env(self, env):
-        for name, value in env.iteritems():
-            self._old_env[name] = osutils.set_or_unset_env(name, value)
-
-    def _restore_env(self):
-        for name, value in self._old_env.iteritems():
-            osutils.set_or_unset_env(name, value)
-
     def _proxied_request(self):
         handler = _urllib2_wrappers.ProxyHandler()
         request = _urllib2_wrappers.Request('GET','http://baz/buzzle')
@@ -1093,13 +1080,13 @@
         return request
 
     def test_empty_user(self):
-        self._install_env({'http_proxy': 'http://bar.com'})
+        self.overrideEnv('http_proxy', 'http://bar.com')
         request = self._proxied_request()
         self.assertFalse(request.headers.has_key('Proxy-authorization'))
 
     def test_invalid_proxy(self):
         """A proxy env variable without scheme"""
-        self._install_env({'http_proxy': 'host:1234'})
+        self.overrideEnv('http_proxy', 'host:1234')
         self.assertRaises(errors.InvalidURL, self._proxied_request)
 
 
@@ -1136,39 +1123,23 @@
             self.no_proxy_host = self.server_host_port
         # The secondary server is the proxy
         self.proxy_url = self.get_secondary_url()
-        self._old_env = {}
 
     def _testing_pycurl(self):
         # TODO: This is duplicated for lots of the classes in this file
         return (features.pycurl.available()
                 and self._transport == PyCurlTransport)
 
-    def _install_env(self, env):
-        for name, value in env.iteritems():
-            self._old_env[name] = osutils.set_or_unset_env(name, value)
-
-    def _restore_env(self):
-        for name, value in self._old_env.iteritems():
-            osutils.set_or_unset_env(name, value)
-
-    def proxied_in_env(self, env):
-        self._install_env(env)
-        t = self.get_readonly_transport()
-        try:
-            self.assertEqual('proxied contents of foo\n', t.get('foo').read())
-        finally:
-            self._restore_env()
-
-    def not_proxied_in_env(self, env):
-        self._install_env(env)
-        t = self.get_readonly_transport()
-        try:
-            self.assertEqual('contents of foo\n', t.get('foo').read())
-        finally:
-            self._restore_env()
+    def assertProxied(self):
+        t = self.get_readonly_transport()
+        self.assertEqual('proxied contents of foo\n', t.get('foo').read())
+
+    def assertNotProxied(self):
+        t = self.get_readonly_transport()
+        self.assertEqual('contents of foo\n', t.get('foo').read())
 
     def test_http_proxy(self):
-        self.proxied_in_env({'http_proxy': self.proxy_url})
+        self.overrideEnv('http_proxy', self.proxy_url)
+        self.assertProxied()
 
     def test_HTTP_PROXY(self):
         if self._testing_pycurl():
@@ -1177,43 +1148,49 @@
             # about. Should we ?)
             raise tests.TestNotApplicable(
                 'pycurl does not check HTTP_PROXY for security reasons')
-        self.proxied_in_env({'HTTP_PROXY': self.proxy_url})
+        self.overrideEnv('HTTP_PROXY', self.proxy_url)
+        self.assertProxied()
 
     def test_all_proxy(self):
-        self.proxied_in_env({'all_proxy': self.proxy_url})
+        self.overrideEnv('all_proxy', self.proxy_url)
+        self.assertProxied()
 
     def test_ALL_PROXY(self):
-        self.proxied_in_env({'ALL_PROXY': self.proxy_url})
+        self.overrideEnv('ALL_PROXY', self.proxy_url)
+        self.assertProxied()
 
     def test_http_proxy_with_no_proxy(self):
-        self.not_proxied_in_env({'http_proxy': self.proxy_url,
-                                 'no_proxy': self.no_proxy_host})
+        self.overrideEnv('no_proxy', self.no_proxy_host)
+        self.overrideEnv('http_proxy', self.proxy_url)
+        self.assertNotProxied()
 
     def test_HTTP_PROXY_with_NO_PROXY(self):
         if self._testing_pycurl():
             raise tests.TestNotApplicable(
                 'pycurl does not check HTTP_PROXY for security reasons')
-        self.not_proxied_in_env({'HTTP_PROXY': self.proxy_url,
-                                 'NO_PROXY': self.no_proxy_host})
+        self.overrideEnv('NO_PROXY', self.no_proxy_host)
+        self.overrideEnv('HTTP_PROXY', self.proxy_url)
+        self.assertNotProxied()
 
     def test_all_proxy_with_no_proxy(self):
-        self.not_proxied_in_env({'all_proxy': self.proxy_url,
-                                 'no_proxy': self.no_proxy_host})
+        self.overrideEnv('no_proxy', self.no_proxy_host)
+        self.overrideEnv('all_proxy', self.proxy_url)
+        self.assertNotProxied()
 
     def test_ALL_PROXY_with_NO_PROXY(self):
-        self.not_proxied_in_env({'ALL_PROXY': self.proxy_url,
-                                 'NO_PROXY': self.no_proxy_host})
+        self.overrideEnv('NO_PROXY', self.no_proxy_host)
+        self.overrideEnv('ALL_PROXY', self.proxy_url)
+        self.assertNotProxied()
 
     def test_http_proxy_without_scheme(self):
+        self.overrideEnv('http_proxy', self.server_host_port)
         if self._testing_pycurl():
             # pycurl *ignores* invalid proxy env variables. If that ever change
             # in the future, this test will fail indicating that pycurl do not
             # ignore anymore such variables.
-            self.not_proxied_in_env({'http_proxy': self.server_host_port})
+            self.assertNotProxied()
         else:
-            self.assertRaises(errors.InvalidURL,
-                              self.proxied_in_env,
-                              {'http_proxy': self.server_host_port})
+            self.assertRaises(errors.InvalidURL, self.assertProxied)
 
 
 class TestRanges(http_utils.TestCaseWithWebserver):
@@ -1707,8 +1684,6 @@
 
     def setUp(self):
         super(TestProxyAuth, self).setUp()
-        self._old_env = {}
-        self.addCleanup(self._restore_env)
         # Override the contents to avoid false positives
         self.build_tree_contents([('a', 'not proxied contents of a\n'),
                                   ('b', 'not proxied contents of b\n'),
@@ -1717,17 +1692,9 @@
                                   ])
 
     def get_user_transport(self, user, password):
-        self._install_env({'all_proxy': self.get_user_url(user, password)})
+        self.overrideEnv('all_proxy', self.get_user_url(user, password))
         return TestAuth.get_user_transport(self, user, password)
 
-    def _install_env(self, env):
-        for name, value in env.iteritems():
-            self._old_env[name] = osutils.set_or_unset_env(name, value)
-
-    def _restore_env(self):
-        for name, value in self._old_env.iteritems():
-            osutils.set_or_unset_env(name, value)
-
     def test_empty_pass(self):
         if self._testing_pycurl():
             import pycurl

=== modified file 'bzrlib/tests/test_https_ca_bundle.py'
--- a/bzrlib/tests/test_https_ca_bundle.py	2009-03-23 14:59:43 +0000
+++ b/bzrlib/tests/test_https_ca_bundle.py	2010-12-16 15:00:42 +0000
@@ -31,19 +31,9 @@
 class TestGetCAPath(TestCaseInTempDir):
 
     def setUp(self):
-        TestCaseInTempDir.setUp(self)
-        new_env = {
-            'CURL_CA_BUNDLE': None,
-            'PATH': None,
-            }
-        self._old_env = {}
-        self.addCleanup(self._restore)
-        for name, value in new_env.iteritems():
-            self._old_env[name] = osutils.set_or_unset_env(name, None)
-
-    def _restore(self):
-        for name, value in self._old_env.iteritems():
-            osutils.set_or_unset_env(name, value)
+        super(TestGetCAPath, self).setUp()
+        self.overrideEnv('CURL_CA_BUNDLE', None)
+        self.overrideEnv('PATH', None)
 
     def _make_file(self, in_dir='.'):
         fname = os.path.join(in_dir, 'curl-ca-bundle.crt')
@@ -55,7 +45,7 @@
         self.assertEqual('', ca_bundle.get_ca_path(use_cache=False))
 
     def test_env_var(self):
-        osutils.set_or_unset_env('CURL_CA_BUNDLE', 'foo.bar')
+        self.overrideEnv('CURL_CA_BUNDLE', 'foo.bar')
         self._make_file()
         self.assertEqual('foo.bar', ca_bundle.get_ca_path(use_cache=False))
 
@@ -65,6 +55,6 @@
         os.mkdir('foo')
         in_dir = os.path.join(os.getcwd(), 'foo')
         self._make_file(in_dir=in_dir)
-        osutils.set_or_unset_env('PATH', in_dir)
+        self.overrideEnv('PATH', in_dir)
         shouldbe = os.path.join(in_dir, 'curl-ca-bundle.crt')
         self.assertEqual(shouldbe, ca_bundle.get_ca_path(use_cache=False))



More information about the bazaar-commits mailing list