From ef32208c839b632ffb3b4895c298c17e7c8eb95b Mon Sep 17 00:00:00 2001 From: Eliah Kagan Date: Thu, 2 Nov 2023 13:45:32 -0400 Subject: [PATCH] Don't swallow AttributeError from super().setUp() This is conceptually independent of the immediately preceding super() call refactoring, but serves the same goal of simplifying and clarifying super() calls. In test.performance.lib, the TestBigRepoR and TestBigRepoRW classes' setUp methods had calls to setUp through super proxies, which were wrapped in try-blocks to swallow AttributeError exceptions. This removes that, relying on the presence of setUp methods in some parent or sibling class in the MRO. The intent appeared to be solely to account for the possibility that no class in the MRO would define a setUp method. However, the unittest.TestCase base class defines noop setUp and tearDown methods to ensure this does not have to be done, allowing the code to be simplified by integrating the assumption of their presence. This may also make the code more robust, because the form in which AttributeError was being swallowed was: try: super().setUp() except AttributeError: pass But that has the disadvantage of also catching AttributeError due to a bug or other problem in code that runs *in* an ancestor or sibling class's existing setUp method. This could alternatively be addressed by using: try: other_setUp = super().setUp except AttributeError: pass else: other_setUp() However, because unittest.TestCase provides empty setUp and tearDown methods to allow such special-casing to be avoided (both in cases like this and for the test runner), this isn't needed. --- test/performance/lib.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/test/performance/lib.py b/test/performance/lib.py index 1ac3e0b60..2b2a632d9 100644 --- a/test/performance/lib.py +++ b/test/performance/lib.py @@ -32,10 +32,7 @@ class TestBigRepoR(TestBase): """ def setUp(self): - try: - super().setUp() - except AttributeError: - pass + super().setUp() repo_path = os.environ.get(k_env_git_repo) if repo_path is None: @@ -64,10 +61,7 @@ class TestBigRepoRW(TestBigRepoR): def setUp(self): self.gitrwrepo = None - try: - super().setUp() - except AttributeError: - pass + super().setUp() dirname = tempfile.mktemp() os.mkdir(dirname) self.gitrwrepo = self.gitrorepo.clone(dirname, shared=True, bare=True, odbt=GitCmdObjectDB)