فهرست منبع

use TestCase.overrideEnv.

Jelmer Vernooij 2 سال پیش
والد
کامیت
2fad497157
4فایلهای تغییر یافته به همراه50 افزوده شده و 89 حذف شده
  1. 6 11
      dulwich/tests/__init__.py
  2. 29 58
      dulwich/tests/test_client.py
  3. 2 10
      dulwich/tests/test_config.py
  4. 13 10
      dulwich/tests/test_porcelain.py

+ 6 - 11
dulwich/tests/__init__.py

@@ -49,16 +49,8 @@ from unittest import (  # noqa: F401
 class TestCase(_TestCase):
     def setUp(self):
         super(TestCase, self).setUp()
-        self._old_home = os.environ.get("HOME")
-        os.environ["HOME"] = "/nonexistent"
-        os.environ["GIT_CONFIG_NOSYSTEM"] = "1"
-
-    def tearDown(self):
-        super(TestCase, self).tearDown()
-        if self._old_home:
-            os.environ["HOME"] = self._old_home
-        else:
-            del os.environ["HOME"]
+        self.overrideEnv("HOME", "/nonexistent")
+        self.overrideEnv("GIT_CONFIG_NOSYSTEM", "1")
 
     def overrideEnv(self, name, value):
         def restore():
@@ -68,7 +60,10 @@ class TestCase(_TestCase):
                 del os.environ[name]
 
         oldval = os.environ.get(name)
-        os.environ[name] = value
+        if value is not None:
+            os.environ[name] = value
+        else:
+            del os.environ[name]
         self.addCleanup(restore)
 
 

+ 29 - 58
dulwich/tests/test_client.py

@@ -820,20 +820,17 @@ class SSHGitClientTests(TestCase):
         self.assertEqual("git-relative-command '~/path/to/repo'", server.command)
 
     def test_ssh_command_precedence(self):
-        os.environ["GIT_SSH"] = "/path/to/ssh"
+        self.overrideEnv("GIT_SSH", "/path/to/ssh")
         test_client = SSHGitClient("git.samba.org")
         self.assertEqual(test_client.ssh_command, "/path/to/ssh")
 
-        os.environ["GIT_SSH_COMMAND"] = "/path/to/ssh -o Option=Value"
+        self.overrideEnv("GIT_SSH_COMMAND", "/path/to/ssh -o Option=Value")
         test_client = SSHGitClient("git.samba.org")
         self.assertEqual(test_client.ssh_command, "/path/to/ssh -o Option=Value")
 
         test_client = SSHGitClient("git.samba.org", ssh_command="ssh -o Option1=Value1")
         self.assertEqual(test_client.ssh_command, "ssh -o Option1=Value1")
 
-        del os.environ["GIT_SSH"]
-        del os.environ["GIT_SSH_COMMAND"]
-
 
 class ReportStatusParserTests(TestCase):
     def test_invalid_pack(self):
@@ -1229,83 +1226,73 @@ class DefaultUrllib3ManagerTest(TestCase):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
         manager = default_urllib3_manager(config=config)
         self.assertIsInstance(manager, urllib3.ProxyManager)
         self.assertTrue(hasattr(manager, "proxy"))
         self.assertEqual(manager.proxy.scheme, "http")
         self.assertEqual(manager.proxy.host, "myproxy")
         self.assertEqual(manager.proxy.port, 8080)
-        del os.environ["http_proxy"]
 
     def test_environment_empty_proxy(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = ""
+        self.overrideEnv("http_proxy", "")
         manager = default_urllib3_manager(config=config)
         self.assertNotIsInstance(manager, urllib3.ProxyManager)
         self.assertIsInstance(manager, urllib3.PoolManager)
-        del os.environ["http_proxy"]
 
     def test_environment_no_proxy_1(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
-        os.environ["no_proxy"] = "xyz,abc.def.gh,abc.gh"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
+        self.overrideEnv("no_proxy", "xyz,abc.def.gh,abc.gh")
         base_url = "http://xyz.abc.def.gh:8080/path/port"
         manager = default_urllib3_manager(config=config, base_url=base_url)
         self.assertNotIsInstance(manager, urllib3.ProxyManager)
         self.assertIsInstance(manager, urllib3.PoolManager)
-        del os.environ["http_proxy"]
-        del os.environ["no_proxy"]
 
     def test_environment_no_proxy_2(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
-        os.environ["no_proxy"] = "xyz,abc.def.gh,abc.gh,ample.com"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
+        self.overrideEnv("no_proxy", "xyz,abc.def.gh,abc.gh,ample.com")
         base_url = "http://ample.com/path/port"
         manager = default_urllib3_manager(config=config, base_url=base_url)
         self.assertNotIsInstance(manager, urllib3.ProxyManager)
         self.assertIsInstance(manager, urllib3.PoolManager)
-        del os.environ["http_proxy"]
-        del os.environ["no_proxy"]
 
     def test_environment_no_proxy_3(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
-        os.environ["no_proxy"] = "xyz,abc.def.gh,abc.gh,ample.com"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
+        self.overrideEnv("no_proxy", "xyz,abc.def.gh,abc.gh,ample.com")
         base_url = "http://ample.com:80/path/port"
         manager = default_urllib3_manager(config=config, base_url=base_url)
         self.assertNotIsInstance(manager, urllib3.ProxyManager)
         self.assertIsInstance(manager, urllib3.PoolManager)
-        del os.environ["http_proxy"]
-        del os.environ["no_proxy"]
 
     def test_environment_no_proxy_4(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
-        os.environ["no_proxy"] = "xyz,abc.def.gh,abc.gh,ample.com"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
+        self.overrideEnv("no_proxy", "xyz,abc.def.gh,abc.gh,ample.com")
         base_url = "http://www.ample.com/path/port"
         manager = default_urllib3_manager(config=config, base_url=base_url)
         self.assertNotIsInstance(manager, urllib3.ProxyManager)
         self.assertIsInstance(manager, urllib3.PoolManager)
-        del os.environ["http_proxy"]
-        del os.environ["no_proxy"]
 
     def test_environment_no_proxy_5(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
-        os.environ["no_proxy"] = "xyz,abc.def.gh,abc.gh,ample.com"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
+        self.overrideEnv("no_proxy", "xyz,abc.def.gh,abc.gh,ample.com")
         base_url = "http://www.example.com/path/port"
         manager = default_urllib3_manager(config=config, base_url=base_url)
         self.assertIsInstance(manager, urllib3.ProxyManager)
@@ -1313,15 +1300,13 @@ class DefaultUrllib3ManagerTest(TestCase):
         self.assertEqual(manager.proxy.scheme, "http")
         self.assertEqual(manager.proxy.host, "myproxy")
         self.assertEqual(manager.proxy.port, 8080)
-        del os.environ["http_proxy"]
-        del os.environ["no_proxy"]
 
     def test_environment_no_proxy_6(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
-        os.environ["no_proxy"] = "xyz,abc.def.gh,abc.gh,ample.com"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
+        self.overrideEnv("no_proxy", "xyz,abc.def.gh,abc.gh,ample.com")
         base_url = "http://ample.com.org/path/port"
         manager = default_urllib3_manager(config=config, base_url=base_url)
         self.assertIsInstance(manager, urllib3.ProxyManager)
@@ -1329,86 +1314,72 @@ class DefaultUrllib3ManagerTest(TestCase):
         self.assertEqual(manager.proxy.scheme, "http")
         self.assertEqual(manager.proxy.host, "myproxy")
         self.assertEqual(manager.proxy.port, 8080)
-        del os.environ["http_proxy"]
-        del os.environ["no_proxy"]
 
     def test_environment_no_proxy_ipv4_address_1(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
-        os.environ["no_proxy"] = "xyz,abc.def.gh,192.168.0.10,ample.com"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
+        self.overrideEnv("no_proxy", "xyz,abc.def.gh,192.168.0.10,ample.com")
         base_url = "http://192.168.0.10/path/port"
         manager = default_urllib3_manager(config=config, base_url=base_url)
         self.assertNotIsInstance(manager, urllib3.ProxyManager)
         self.assertIsInstance(manager, urllib3.PoolManager)
-        del os.environ["http_proxy"]
-        del os.environ["no_proxy"]
 
     def test_environment_no_proxy_ipv4_address_2(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
-        os.environ["no_proxy"] = "xyz,abc.def.gh,192.168.0.10,ample.com"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
+        self.overrideEnv("no_proxy", "xyz,abc.def.gh,192.168.0.10,ample.com")
         base_url = "http://192.168.0.10:8888/path/port"
         manager = default_urllib3_manager(config=config, base_url=base_url)
         self.assertNotIsInstance(manager, urllib3.ProxyManager)
         self.assertIsInstance(manager, urllib3.PoolManager)
-        del os.environ["http_proxy"]
-        del os.environ["no_proxy"]
-    
+
     def test_environment_no_proxy_ipv4_address_3(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
-        os.environ["no_proxy"] = "xyz,abc.def.gh,ff80:1::/64,192.168.0.0/24,ample.com"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
+        self.overrideEnv("no_proxy", "xyz,abc.def.gh,ff80:1::/64,192.168.0.0/24,ample.com")
         base_url = "http://192.168.0.10/path/port"
         manager = default_urllib3_manager(config=config, base_url=base_url)
         self.assertNotIsInstance(manager, urllib3.ProxyManager)
         self.assertIsInstance(manager, urllib3.PoolManager)
-        del os.environ["http_proxy"]
-        del os.environ["no_proxy"]
 
     def test_environment_no_proxy_ipv6_address_1(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
-        os.environ["no_proxy"] = "xyz,abc.def.gh,ff80:1::affe,ample.com"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
+        self.overrideEnv("no_proxy", "xyz,abc.def.gh,ff80:1::affe,ample.com")
         base_url = "http://[ff80:1::affe]/path/port"
         manager = default_urllib3_manager(config=config, base_url=base_url)
         self.assertNotIsInstance(manager, urllib3.ProxyManager)
         self.assertIsInstance(manager, urllib3.PoolManager)
-        del os.environ["http_proxy"]
-        del os.environ["no_proxy"]
 
     def test_environment_no_proxy_ipv6_address_2(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
-        os.environ["no_proxy"] = "xyz,abc.def.gh,ff80:1::affe,ample.com"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
+        self.overrideEnv("no_proxy", "xyz,abc.def.gh,ff80:1::affe,ample.com")
         base_url = "http://[ff80:1::affe]:1234/path/port"
         manager = default_urllib3_manager(config=config, base_url=base_url)
         self.assertNotIsInstance(manager, urllib3.ProxyManager)
         self.assertIsInstance(manager, urllib3.PoolManager)
-        del os.environ["http_proxy"]
-        del os.environ["no_proxy"]
 
     def test_environment_no_proxy_ipv6_address_3(self):
         import urllib3
 
         config = ConfigDict()
-        os.environ["http_proxy"] = "http://myproxy:8080"
-        os.environ["no_proxy"] = "xyz,abc.def.gh,192.168.0.0/24,ff80:1::/64,ample.com"
+        self.overrideEnv("http_proxy", "http://myproxy:8080")
+        self.overrideEnv("no_proxy", "xyz,abc.def.gh,192.168.0.0/24,ff80:1::/64,ample.com")
         base_url = "http://[ff80:1::affe]/path/port"
         manager = default_urllib3_manager(config=config, base_url=base_url)
         self.assertNotIsInstance(manager, urllib3.ProxyManager)
         self.assertIsInstance(manager, urllib3.PoolManager)
-        del os.environ["http_proxy"]
-        del os.environ["no_proxy"]
 
     def test_config_proxy_custom_cls(self):
         import urllib3

+ 2 - 10
dulwich/tests/test_config.py

@@ -307,14 +307,6 @@ class ConfigDictTests(TestCase):
 
 
 class StackedConfigTests(TestCase):
-    def setUp(self):
-        super(StackedConfigTests, self).setUp()
-        self._old_path = os.environ.get("PATH")
-
-    def tearDown(self):
-        super(StackedConfigTests, self).tearDown()
-        os.environ["PATH"] = self._old_path
-
     def test_default_backends(self):
         StackedConfig.default_backends()
 
@@ -323,7 +315,7 @@ class StackedConfigTests(TestCase):
         from dulwich.config import get_win_system_paths
 
         install_dir = os.path.join("C:", "foo", "Git")
-        os.environ["PATH"] = os.path.join(install_dir, "cmd")
+        self.overrideEnv("PATH", os.path.join(install_dir, "cmd"))
         with patch("os.path.exists", return_value=True):
             paths = set(get_win_system_paths())
         self.assertEqual(
@@ -340,7 +332,7 @@ class StackedConfigTests(TestCase):
 
         from dulwich.config import get_win_system_paths
 
-        del os.environ["PATH"]
+        self.overrideEnv("PATH", None)
         install_dir = os.path.join("C:", "foo", "Git")
         with patch("winreg.OpenKey"):
             with patch(

+ 13 - 10
dulwich/tests/test_porcelain.py

@@ -436,7 +436,8 @@ class CommitTests(PorcelainTestCase):
         self.assertEqual(commit._author_timezone, 18000)
         self.assertEqual(commit._commit_timezone, 18000)
 
-        os.environ["GIT_AUTHOR_DATE"] = os.environ["GIT_COMMITTER_DATE"] = "1995-11-20T19:12:08-0501"
+        self.overrideEnv("GIT_AUTHOR_DATE", "1995-11-20T19:12:08-0501")
+        self.overrideEnv("GIT_COMMITTER_DATE", "1995-11-20T19:12:08-0501")
 
         sha = porcelain.commit(
             self.repo.path,
@@ -451,8 +452,9 @@ class CommitTests(PorcelainTestCase):
         self.assertEqual(commit._author_timezone, -18060)
         self.assertEqual(commit._commit_timezone, -18060)
 
-        del os.environ["GIT_AUTHOR_DATE"]
-        del os.environ["GIT_COMMITTER_DATE"]
+        self.overrideEnv("GIT_AUTHOR_DATE", None)
+        self.overrideEnv("GIT_COMMITTER_DATE", None)
+
         local_timezone = time.localtime().tm_gmtoff
 
         sha = porcelain.commit(
@@ -536,7 +538,8 @@ class CommitSignTests(PorcelainGpgTestCase):
 class TimezoneTests(PorcelainTestCase):
 
     def put_envs(self, value):
-        os.environ["GIT_AUTHOR_DATE"] = os.environ["GIT_COMMITTER_DATE"] = value
+        self.overrideEnv("GIT_AUTHOR_DATE", value)
+        self.overrideEnv("GIT_COMMITTER_DATE", value)
 
     def fallback(self, value):
         self.put_envs(value)
@@ -583,8 +586,8 @@ class TimezoneTests(PorcelainTestCase):
         self.fallback("20.11.1995")
 
     def test_different_envs(self):
-        os.environ["GIT_AUTHOR_DATE"] = "0 +0500"
-        os.environ["GIT_COMMITTER_DATE"] = "0 +0501"
+        self.overrideEnv("GIT_AUTHOR_DATE", "0 +0500")
+        self.overrideEnv("GIT_COMMITTER_DATE", "0 +0501")
         self.assertTupleEqual((18000, 18060), porcelain.get_user_timezones())
 
     def test_no_envs(self):
@@ -593,16 +596,16 @@ class TimezoneTests(PorcelainTestCase):
         self.put_envs("0 +0500")
         self.assertTupleEqual((18000, 18000), porcelain.get_user_timezones())
 
-        del os.environ["GIT_COMMITTER_DATE"]
+        self.overrideEnv("GIT_COMMITTER_DATE", None)
         self.assertTupleEqual((18000, local_timezone), porcelain.get_user_timezones())
 
         self.put_envs("0 +0500")
-        del os.environ["GIT_AUTHOR_DATE"]
+        self.overrideEnv("GIT_AUTHOR_DATE", None)
         self.assertTupleEqual((local_timezone, 18000), porcelain.get_user_timezones())
 
         self.put_envs("0 +0500")
-        del os.environ["GIT_AUTHOR_DATE"]
-        del os.environ["GIT_COMMITTER_DATE"]
+        self.overrideEnv("GIT_AUTHOR_DATE", None)
+        self.overrideEnv("GIT_COMMITTER_DATE", None)
         self.assertTupleEqual((local_timezone, local_timezone), porcelain.get_user_timezones())