From 61dd90e0289a38be841566fdd5f23877646b29c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Thu, 1 Apr 2021 08:56:44 +0200
Subject: [PATCH] test_result: don't set status "PASS" when build fail

When installing the tested software failed, no test result lines
have been created, this should have status FAILED.
---
 .../portal_components/test.erp5.testTaskDistribution.py      | 1 +
 .../test_result_workflow/scripts/TestResult_complete.py      | 5 +++--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/bt5/erp5_test_result/TestTemplateItem/portal_components/test.erp5.testTaskDistribution.py b/bt5/erp5_test_result/TestTemplateItem/portal_components/test.erp5.testTaskDistribution.py
index 11753d11c5..97fc14208e 100644
--- a/bt5/erp5_test_result/TestTemplateItem/portal_components/test.erp5.testTaskDistribution.py
+++ b/bt5/erp5_test_result/TestTemplateItem/portal_components/test.erp5.testTaskDistribution.py
@@ -739,6 +739,7 @@ class TestTaskDistribution(TaskDistributionTestCase):
     self.tool.reportTaskFailure(test_result_path, {}, "UnitTestNode 1")
     self.assertEqual("failed", test_result.getSimulationState())
     checkNodeState("failed", "failed")
+    self.assertEqual("FAIL", test_result.getStringIndex())
 
   def test_07b_reportTaskFailureWithRunningTest(self):
     """
diff --git a/bt5/erp5_test_result/WorkflowTemplateItem/portal_workflow/test_result_workflow/scripts/TestResult_complete.py b/bt5/erp5_test_result/WorkflowTemplateItem/portal_workflow/test_result_workflow/scripts/TestResult_complete.py
index c8bc516fd4..bd636b3907 100644
--- a/bt5/erp5_test_result/WorkflowTemplateItem/portal_workflow/test_result_workflow/scripts/TestResult_complete.py
+++ b/bt5/erp5_test_result/WorkflowTemplateItem/portal_workflow/test_result_workflow/scripts/TestResult_complete.py
@@ -41,7 +41,8 @@ if test_result.getPortalType() == 'Test Result':
                  failures=0,
                  skips=0,
                  test_result_retry_count=0)
-  for line in test_result.objectValues(portal_type='Test Result Line'):
+  test_result_line_list = test_result.objectValues(portal_type='Test Result Line')
+  for line in test_result_line_list:
     for prop in edit_kw:
       try:
         edit_kw[prop] = edit_kw[prop] + line.getProperty(prop, 0)
@@ -51,7 +52,7 @@ if test_result.getPortalType() == 'Test Result':
       else:
         if line.getStringIndex() == 'UNKNOWN':
           has_unknown_result = True
-  if has_unknown_result or edit_kw['errors'] or (
+  if has_unknown_result or not test_result_line_list or edit_kw['errors'] or (
       edit_kw['failures'] and unexpected(test_result)):
     status = 'FAIL'
   else:
-- 
2.30.9