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