kunit: tool: fix minor typing issue with None status
The code to handle aggregating statuses didn't check that the status
actually got set to some non-None value.
Default the value to SUCCESS instead of adding a bunch of `is None`
checks.
This sorta follows the precedent in commit 3fc48259d5
("kunit: Don't
fail test suites if one of them is empty").
Also slightly simplify the code and add type annotations.
Signed-off-by: Daniel Latypov <dlatypov@google.com>
Reviewed-by: David Gow <davidgow@google.com>
Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
Tested-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
Родитель
09641f7c7d
Коммит
81c60306dc
|
@ -12,13 +12,13 @@ from collections import namedtuple
|
|||
from datetime import datetime
|
||||
from enum import Enum, auto
|
||||
from functools import reduce
|
||||
from typing import Iterator, List, Optional, Tuple
|
||||
from typing import Iterable, Iterator, List, Optional, Tuple
|
||||
|
||||
TestResult = namedtuple('TestResult', ['status','suites','log'])
|
||||
|
||||
class TestSuite(object):
|
||||
def __init__(self) -> None:
|
||||
self.status = None # type: Optional[TestStatus]
|
||||
self.status = TestStatus.SUCCESS
|
||||
self.name = ''
|
||||
self.cases = [] # type: List[TestCase]
|
||||
|
||||
|
@ -30,7 +30,7 @@ class TestSuite(object):
|
|||
|
||||
class TestCase(object):
|
||||
def __init__(self) -> None:
|
||||
self.status = None # type: Optional[TestStatus]
|
||||
self.status = TestStatus.SUCCESS
|
||||
self.name = ''
|
||||
self.log = [] # type: List[str]
|
||||
|
||||
|
@ -224,12 +224,11 @@ def parse_ok_not_ok_test_suite(lines: List[str],
|
|||
else:
|
||||
return False
|
||||
|
||||
def bubble_up_errors(to_status, status_container_list) -> TestStatus:
|
||||
status_list = map(to_status, status_container_list)
|
||||
return reduce(max_status, status_list, TestStatus.SUCCESS)
|
||||
def bubble_up_errors(statuses: Iterable[TestStatus]) -> TestStatus:
|
||||
return reduce(max_status, statuses, TestStatus.SUCCESS)
|
||||
|
||||
def bubble_up_test_case_errors(test_suite: TestSuite) -> TestStatus:
|
||||
max_test_case_status = bubble_up_errors(lambda x: x.status, test_suite.cases)
|
||||
max_test_case_status = bubble_up_errors(x.status for x in test_suite.cases)
|
||||
return max_status(max_test_case_status, test_suite.status)
|
||||
|
||||
def parse_test_suite(lines: List[str], expected_suite_index: int) -> Optional[TestSuite]:
|
||||
|
@ -282,8 +281,8 @@ def parse_test_plan(lines: List[str]) -> Optional[int]:
|
|||
else:
|
||||
return None
|
||||
|
||||
def bubble_up_suite_errors(test_suite_list: List[TestSuite]) -> TestStatus:
|
||||
return bubble_up_errors(lambda x: x.status, test_suite_list)
|
||||
def bubble_up_suite_errors(test_suites: Iterable[TestSuite]) -> TestStatus:
|
||||
return bubble_up_errors(x.status for x in test_suites)
|
||||
|
||||
def parse_test_result(lines: List[str]) -> TestResult:
|
||||
consume_non_diagnostic(lines)
|
||||
|
|
Загрузка…
Ссылка в новой задаче