diff --git a/.changes/unreleased/Features-20240323-172105.yaml b/.changes/unreleased/Features-20240323-172105.yaml new file mode 100644 index 00000000000..d7bd2b49e7d --- /dev/null +++ b/.changes/unreleased/Features-20240323-172105.yaml @@ -0,0 +1,6 @@ +kind: Features +body: Populate actual count of failures in `run_results.json` for passing tests +time: 2024-03-23T17:21:05.10213675+07:00 +custom: + Author: tbog357 + Issue: "9808" diff --git a/core/dbt/task/test.py b/core/dbt/task/test.py index dbcbbbb8ee3..2d06a1ad143 100644 --- a/core/dbt/task/test.py +++ b/core/dbt/task/test.py @@ -298,6 +298,7 @@ def build_test_run_result(self, test: TestNode, result: TestResultData) -> RunRe failures = result.failures else: status = TestStatus.Pass + failures = result.failures run_result = RunResult( node=test, diff --git a/tests/functional/schema_tests/test_schema_v2_tests.py b/tests/functional/schema_tests/test_schema_v2_tests.py index ea33e62bce3..767ae783f3e 100644 --- a/tests/functional/schema_tests/test_schema_v2_tests.py +++ b/tests/functional/schema_tests/test_schema_v2_tests.py @@ -126,7 +126,7 @@ def assertTestFailed(self, result): def assertTestPassed(self, result): assert result.status == "pass" assert not result.skipped - assert result.failures == 0, "test {} failed".format(result.node.name) + assert result.failures >= 0, "test {} failed".format(result.node.name) def test_schema_tests( self, @@ -213,7 +213,7 @@ def assertTestWarn(self, result): def assertTestPassed(self, result): assert result.status == "pass" assert not result.skipped - assert result.failures == 0, "test {} failed".format(result.node.name) + assert result.failures >= 0, "test {} failed".format(result.node.name) def test_limit_schema_tests( self, @@ -235,7 +235,7 @@ def test_limit_schema_tests( else: self.assertTestPassed(result) # warnings are also marked as failures - assert sum(x.failures for x in test_results) == 3 + assert sum(x.failures for x in test_results) == 4 class TestDefaultBoolType: @@ -264,7 +264,7 @@ def assertTestWarn(self, result): def assertTestPassed(self, result): assert result.status == "pass" assert not result.skipped - assert result.failures == 0, "test {} failed".format(result.node.name) + assert result.failures >= 0, "test {} failed".format(result.node.name) def test_limit_schema_tests( self, @@ -286,7 +286,7 @@ def test_limit_schema_tests( else: self.assertTestPassed(result) # warnings are also marked as failures - assert sum(x.failures for x in test_results) == 3 + assert sum(x.failures for x in test_results) == 4 class TestOtherBoolType: @@ -331,7 +331,7 @@ def assertTestWarn(self, result): def assertTestPassed(self, result): assert result.status == "pass" assert not result.skipped - assert result.failures == 0, "test {} failed".format(result.node.name) + assert result.failures >= 0, "test {} failed".format(result.node.name) def test_limit_schema_tests( self, @@ -353,7 +353,7 @@ def test_limit_schema_tests( else: self.assertTestPassed(result) # warnings are also marked as failures - assert sum(x.failures for x in test_results) == 3 + assert sum(x.failures for x in test_results) == 4 class TestNonBoolType: @@ -478,7 +478,7 @@ def test_hooks_do_run_for_tests( for result in results: assert result.status == "pass" assert not result.skipped - assert result.failures == 0, "test {} failed".format(result.node.name) + assert result.failures >= 0, "test {} failed".format(result.node.name) class TestHooksForWhich: @@ -511,7 +511,7 @@ def test_these_hooks_dont_run_for_tests( for result in results: assert result.status == "pass" assert not result.skipped - assert result.failures == 0, "test {} failed".format(result.node.name) + assert result.failures >= 0, "test {} failed".format(result.node.name) class TestCustomSchemaTests: