You've already forked pg_probackup
mirror of
https://github.com/postgrespro/pg_probackup.git
synced 2025-07-16 07:14:15 +02:00
[PBCKP-304] moved _is_result_is_ok() into ProbackupTest class scope
This commit is contained in:
@ -174,29 +174,6 @@ def _slow_start(self, replica=False):
|
|||||||
sleep(0.5)
|
sleep(0.5)
|
||||||
|
|
||||||
|
|
||||||
def _is_test_result_ok(test_case):
|
|
||||||
# sources of solution:
|
|
||||||
# 1. python versions 2.7 - 3.10, verified on 3.10, 3.7, 2.7, taken from:
|
|
||||||
# https://tousu.in/qa/?qa=555402/unit-testing-getting-pythons-unittest-results-in-a-teardown-method&show=555403#a555403
|
|
||||||
#
|
|
||||||
# 2. python versions 3.11+ mixin, verified on 3.11, taken from: https://stackoverflow.com/a/39606065
|
|
||||||
|
|
||||||
if hasattr(test_case, '_outcome'): # Python 3.4+
|
|
||||||
if hasattr(test_case._outcome, 'errors'):
|
|
||||||
# Python 3.4 - 3.10 (These two methods have no side effects)
|
|
||||||
result = test_case.defaultTestResult() # These two methods have no side effects
|
|
||||||
test_case._feedErrorsToResult(result, test_case._outcome.errors)
|
|
||||||
else:
|
|
||||||
# Python 3.11+
|
|
||||||
result = test_case._outcome.result
|
|
||||||
else: # Python 2.7, 3.0-3.3
|
|
||||||
result = getattr(test_case, '_outcomeForDoCleanups', test_case._resultForDoCleanups)
|
|
||||||
|
|
||||||
ok = all(test != test_case for test, text in result.errors + result.failures)
|
|
||||||
|
|
||||||
return ok
|
|
||||||
|
|
||||||
|
|
||||||
class PostgresNodeExtended(testgres.PostgresNode):
|
class PostgresNodeExtended(testgres.PostgresNode):
|
||||||
|
|
||||||
def __init__(self, base_dir=None, *args, **kwargs):
|
def __init__(self, base_dir=None, *args, **kwargs):
|
||||||
@ -396,8 +373,33 @@ class ProbackupTest(object):
|
|||||||
|
|
||||||
os.environ["PGAPPNAME"] = "pg_probackup"
|
os.environ["PGAPPNAME"] = "pg_probackup"
|
||||||
|
|
||||||
|
def __is_test_result_ok(test_case):
|
||||||
|
# sources of solution:
|
||||||
|
# 1. python versions 2.7 - 3.10, verified on 3.10, 3.7, 2.7, taken from:
|
||||||
|
# https://tousu.in/qa/?qa=555402/unit-testing-getting-pythons-unittest-results-in-a-teardown-method&show=555403#a555403
|
||||||
|
#
|
||||||
|
# 2. python versions 3.11+ mixin, verified on 3.11, taken from: https://stackoverflow.com/a/39606065
|
||||||
|
|
||||||
|
if not isinstance(test_case, unittest.TestCase):
|
||||||
|
raise AssertionError("test_case is not instance of unittest.TestCase")
|
||||||
|
|
||||||
|
if hasattr(test_case, '_outcome'): # Python 3.4+
|
||||||
|
if hasattr(test_case._outcome, 'errors'):
|
||||||
|
# Python 3.4 - 3.10 (These two methods have no side effects)
|
||||||
|
result = test_case.defaultTestResult() # These two methods have no side effects
|
||||||
|
test_case._feedErrorsToResult(result, test_case._outcome.errors)
|
||||||
|
else:
|
||||||
|
# Python 3.11+
|
||||||
|
result = test_case._outcome.result
|
||||||
|
else: # Python 2.7, 3.0-3.3
|
||||||
|
result = getattr(test_case, '_outcomeForDoCleanups', test_case._resultForDoCleanups)
|
||||||
|
|
||||||
|
ok = all(test != test_case for test, text in result.errors + result.failures)
|
||||||
|
|
||||||
|
return ok
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
if _is_test_result_ok(self):
|
if self.__is_test_result_ok():
|
||||||
for node in self.nodes_to_cleanup:
|
for node in self.nodes_to_cleanup:
|
||||||
node.cleanup()
|
node.cleanup()
|
||||||
self.del_test_dir(self.module_name, self.fname)
|
self.del_test_dir(self.module_name, self.fname)
|
||||||
|
Reference in New Issue
Block a user